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