Advertencia de SML: escriba Vars no generalizadas cuando use listas vacías o la opción NINGUNO

No puedo, por mi vida, averiguar por qué la siguiente función SML está lanzando una Advertencia en mi problema con la tarea:

fun my_func f ls  = 
  case ls of 
  [] => raise MyException
  | head :: rest => case f head of 
                    SOME v => v
                    | NONE => my_func f rest

fun f a = if isSome a then a else NONE;

Siempre que llame a my_func con las siguientes funciones de prueba:

my_func f [NONE, NONE];
my_func f [];

Siempre me sale la advertencia:

Advertencia: las vars de tipo no generalizadas debido a la restricción de valor se crean instancias de tipos ficticios (X1, X2, ...)

Cada vez que paso una lista de opciones que contiene al menos un valor ALGUNO, esta Advertencia no se lanza. Sé que debe tener algo que ver con el hecho de que estoy usando el polimorfismo en mi función de curry, pero he estado completamente atascado en cuanto a cómo deshacerme de estas advertencias.

Por favor, ayuda si tienes alguna idea, gracias de antemano!

Respuestas a la pregunta(1)

Su respuesta a la pregunta