SML [圆形]错误

时间:2011-01-08 19:33:45

标签: sml

我想写一个只从列表中提取奇数的函数。类似的东西:

fun odd(nil) = nil
  | odd(a::nil) = a
  | odd(a::(b::c)) = a::odd(c);

但它会导致此错误:

  

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

1 个答案:

答案 0 :(得分:7)

在第二种情况odd(a::nil) = a中,您返回a,这是一个单独的元素。在另外两种情况下,您返回一个列表。如果您将其更改为odd(a::nil) = [a],那么所有情况都会返回一个列表,它会起作用。