为什么我在标准ML的这段代码中一直出错?

时间:2012-10-23 04:13:26

标签: sml ml

我正在学习标准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

我知道我正在尝试的语法有问题。

1 个答案:

答案 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

此外,建议不要hddrop来分解列表。您应该使用模式匹配。

fun in_list(element, x::xs) = 
    if x = element then true
    else in_list(element, xs)

有一个缺少空列表的基本情况,您可以使用orelse替换if x = element then true ...。我把它留给你作为建议。