Error de SML [circularidad]

Me gustaría escribir una función que extraiga solo los números impares de una lista. Algo como:

fun odd(nil) = nil
  | odd(a::nil) = a
  | odd(a::(b::c)) = a::odd(c);

Pero causa este error:

operador y operando no están de acuerdo [circularidad]

preguntado el 08 de enero de 11 a las 19:01

1 Respuestas

En tu segundo caso odd(a::nil) = a regresa a, que es un solo elemento. En los otros dos casos devuelve una lista. Si lo cambia a odd(a::nil) = [a], entonces todos los casos devuelven una lista, funciona.

Respondido el 08 de enero de 11 a las 22:01

Sí, tienes razón. Gracias. Marco - Marco

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.