Cuando se utiliza el intérprete GHC interactiva, es posible solicitar el tipo inferido de una expresión:¿Cómo selecciona GHCi los nombres para las variables de tipo?
Prelude> :t map
map :: (a -> b) -> [a] -> [b]
Parece que lleva los nombres de las variables de tipo de la firma desde el map
es defined como
map :: (a -> b) -> [a] -> [b]
map _ [] = []
map f (x:xs) = f x : map f xs
en el preludio. ¡Eso tiene mucho sentido! Mi pregunta es: ¿cómo se seleccionan los nombres de las variables de tipo cuando no se da una firma?
Un ejemplo sería
Prelude> :t map fst
map fst :: [(b, b1)] -> [b]
donde recogió nombres b
y b1
. Está claro que el cambio de nombre debe tener lugar, sino simplemente a partir de a
, b
, ... habría dado
map fst :: [(a, b)] -> [a]
lugar, que me parece un poco más legible.
Gracias, eso es una buena explicación! No había pensado en el caso en el que desea que se renombren varios 'n', pero siga relacionado. –
No es imposible. (unSafeCoerce o simplemente viejo '_ | _') – PyRulez