SML Как определить правильный вариант
Почему следующий код не работает?
fun sum_list xs =
case xs of
[] => NONE
| x::xs' => SOME (x+sum_list xs')
Этот код хорошо работает, когда вместо NONE он равен нулю и когда я удаляю НЕКОТОРЫЕ. Я знаю, что для суммы пустого списка ноль - это разумный ответ. Но почему следующий пример терпит неудачу?
Обновление: Сделано это, следуя ответу Диего:
fun sum_list xs =
case xs of
[] => NONE
| x =>
let
fun slist x =
case x of
[] => 0
| x::xs' => x + slist xs'
in
SOME (slist x)
end