Ошибка SML [округлости] - PullRequest
       1

Ошибка SML [округлости]

4 голосов
/ 08 января 2011

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

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

Но это вызывает эту ошибку:

оператор и операнд не согласны [цикличность]

1 Ответ

7 голосов
/ 08 января 2011

Во втором случае odd(a::nil) = a вы возвращаете a, который является единственным элементом. В двух других случаях вы возвращаете список. Если вы измените его на odd(a::nil) = [a], поэтому все случаи возвращают список, он работает.

...