SML So definieren Sie die richtige Option

Warum funktioniert der folgende Code nicht?

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

Dieser Code funktioniert gut, wenn anstelle von NONE Null ist und wenn ich SOME entferne. Ich weiß, dass für die Summe einer leeren Liste Null die vernünftige Antwort ist. Aber warum schlägt das folgende Beispiel fehl?

Update: Es hat funktioniert, indem die Antwort von Diego befolgt wurde:

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage