我正在学习标准ML而且我一直收到这个错误,我不确定为什么?
以下是代码和错误:
> fun in_list(element, list) =
if hd(list) = element then true
else val tempList = List.drop(list, 1);
in_list(element, tempList);
# # Error-Expression expected but val was found
Static Errors
我知道我正在尝试的语法有问题。
答案 0 :(得分:3)
您需要在val
块中包含let..in..end
值。
fun in_list(element, list) =
if hd(list) = element then true
else
let
val tempList = List.drop(list, 1)
in
in_list(element, tempList)
end
此外,建议不要hd
和drop
来分解列表。您应该使用模式匹配。
fun in_list(element, x::xs) =
if x = element then true
else in_list(element, xs)
有一个缺少空列表的基本情况,您可以使用orelse
替换if x = element then true ...
。我把它留给你作为建议。