SML [圆形]错误

mar*_*rco 4 sml

我想编写一个只从列表中提取奇数的函数.就像是:

fun odd(nil) = nil
  | odd(a::nil) = a
  | odd(a::(b::c)) = a::odd(c);
Run Code Online (Sandbox Code Playgroud)

但它会导致此错误:

运算符和操作数不同意[循环]

sep*_*p2k 7

在你的第二种情况下,odd(a::nil) = a你返回a,这是一个单一的元素.在另外两种情况下,您返回一个列表.如果您将其更改为odd(a::nil) = [a],所以所有情况都返回一个列表,它可以工作.