otc*_*com 1 ocaml functional-programming
我尝试编写一个简单的OCaml程序,如果列表包含所有偶数整数则返回true,否则返回false.
let rec allEven l =
List.hd l mod 2 = 0 && allEven (List.tl l);;
Run Code Online (Sandbox Code Playgroud)
当我输入代码时,它没有给我任何错误.但每当我输入一个以allEven [2; 3]之类的偶数开头的列表时,它会给出错误消息"Failure"hd"".不确定为什么.谢谢!!
小智 5
List.hd将在空列表中引发Failure"hd".要更正您的功能,请使用模式匹配:
let rec allEven l =
match l with
| [] -> true
| h::t -> if h mod 2 = 1 then false else allEven t
Run Code Online (Sandbox Code Playgroud)
此外,OCaml中的模运算符是"mod"而不是"%"