Functional programming OCaml错误失败“;房屋署";
我尝试编写一个简单的OCaml程序,如果a列表包含所有偶数,则返回true;如果不包含偶数,则返回falseFunctional programming OCaml错误失败“;房屋署";,functional-programming,ocaml,Functional Programming,Ocaml,我尝试编写一个简单的OCaml程序,如果a列表包含所有偶数,则返回true;如果不包含偶数,则返回false let rec allEven l = List.hd l mod 2 = 0 && allEven (List.tl l);; 当我输入代码时,它没有给我任何错误。但每当我输入一个以偶数开头的列表,比如allEven[2;3],它就会给我错误消息“Failure”hd“。不太清楚为什么。谢谢 List.hd将在空列表上引发故障“hd”。要更正功能,请使用模式匹配:
let rec allEven l =
List.hd l mod 2 = 0 && allEven (List.tl l);;
当我输入代码时,它没有给我任何错误。但每当我输入一个以偶数开头的列表,比如allEven[2;3],它就会给我错误消息“Failure”hd“。不太清楚为什么。谢谢 List.hd将在空列表上引发故障“hd”。要更正功能,请使用模式匹配:
let rec allEven l =
match l with
| [] -> true
| h::t -> if h mod 2 = 1 then false else allEven t
此外,OCaml中的模运算符是“mod”而不是“%”List。hd将在空列表中引发故障“hd”。要更正功能,请使用模式匹配:
let rec allEven l =
match l with
| [] -> true
| h::t -> if h mod 2 = 1 then false else allEven t
此外,当您编写
时,OCaml中的模运算符是“mod”而不是“%”,如果。。。如果是假的话……
或者类似的话,你应该支付5美元的解雇税另外,让allEven=List.for_all(fun x->x mod 2=0)
可能是更好的定义此函数的方法。。。如果是假的话……或者类似的话,你应该支付5美元的解雇税另外,let allEven=List.for_all(fun x->x mod 2=0)
可能是更好的定义此函数的方法。