2011-01-08 2 views
4

Я хотел бы написать одну функцию, которая извлекает только нечетные числа из списка. Что-то вроде:Ошибка SML [roundity]

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

Да Вы абсолютно. Спасибо. Marco – marco

Смежные вопросы