SML/NJ 错误。已完成,退出代码为 1

SML/NJ Error. Finished with exit code 1

我正在尝试执行以下操作,但编译器以代码 1 退出。

exception InvalidCharacter

fun order (_, _, nil) = nil 
    | order(b:char list, l::xl::xxl, s::xs) = if s=l then length(l::xl::xxl)::(order (b, b, xs))
else order(b, xl::xxl, s::xs)
    | order (_, nil, _) = raise InvalidCharacter;

order ([#"a",#"b", #"c", #"d", #"e"],[#"a",#"b", #"c", #"d", #"e"],[#"b", #"e"]);

并且编译器也给出了这个函数的非穷尽匹配。我不明白为什么。

对于中间的参数,您刚刚匹配了列表至少有两个参数且列表为空的情况。当列表只有一个元素时,您还需要匹配。