SML Jak zdefiniować właściwą opcję

Dlaczego poniższy kod nie działa?

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

Ten kod działa dobrze, gdy zamiast NONE jest zero i gdy usuwam SOME. Wiem, że dla sumy pustej listy zero jest rozsądną odpowiedzią. Ale dlaczego poniższy przykład zawodzi?

Aktualizacja: sprawdziła się, postępując zgodnie z odpowiedzią Diego:

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

questionAnswers(1)

yourAnswerToTheQuestion