2011-01-08 49 views
4

我想寫一個函數,只從列表中提取奇數。喜歡的東西:SML [圓形]錯誤

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

但它會導致這個錯誤:

operator and operand don't agree [circularity]

回答

7

在你的第二個案例odd(a::nil) = a返回a,這是一個單一的元素。在另外兩種情況下,你會返回一個列表。如果您將其更改爲odd(a::nil) = [a],那麼所有情況都會返回一個列表,它會起作用。

+0

是的,你是rigth。謝謝。馬爾科 – marco 2011-01-10 19:30:50