real
no es un tipo de igualdad en ml, por lo que tampoco se construyen tipos polimórficos de real
s - en particular, real list
s no son tipos de igualdad, por lo que no puede usar el operador =
para comparar dos real list
S, incluso si esas listas están vacías. En cambio, debe coincidir con el patrón. Por ejemplo,
fun reverse [] = []
| reverse (x::xs) = (reverse xs) @ [x]
o
fun reverse [] = []
| reverse (x::xs) = case xs of
[] => [x]
| _ => (reverse xs) @ [x]
funcionará incluso para tipos de no calidad.
(Alternativamente, use la función incorporada List.rev
.)