SML Как определить правильный вариант

Почему нетт следующий код нет работаешь?

fun sum_list xs =
case xs of
    [] => NONE
 | x::xs' => SOME (x+sum_list xs')

Этот код хорошо работает, когда вместо NONE он равен нулю и когда я удаляю НЕКОТОРЫЕ. Я знаю, что для суммы пустого списка ноль - это разумный ответ. Но почему следующий пример терпит неудачу?

Обновление: заставил это работать, следуя ДиегоОтвет s:

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

Ответы на вопрос(1)

Ваш ответ на вопрос