SML Cómo definir la opción adecuada

¿Por qué no funciona el siguiente código?

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

Este código funciona bien cuando en lugar de NINGUNO es cero y cuando elimino ALGUNOS. Sé que para la suma de una lista vacía el cero es la respuesta razonable. ¿Pero por qué falla el siguiente ejemplo?

Actualización: Hizo que funcionara siguiendo la Respuesta de 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

Respuestas a la pregunta(1)

Su respuesta a la pregunta