Como o GHCi escolhe nomes para variáveis de tipo?
Ao usar o intérprete interativo do GHC, é possível solicitar o tipo inferido de uma expressão:
Prelude> :t map
map :: (a -> b) -> [a] -> [b]
Parece que leva os nomes das variáveis de tipo da assinatura desdemap
édefinira Com
map :: (a -> b) -> [a] -> [b]
map _ [] = []
map f (x:xs) = f x : map f xs
no Prelúdio. Isso faz muito sentido! Minha pergunta é: como os nomes das variáveis de tipo são selecionados quando não há assinatur
Um exemplo seria
Prelude> :t map fst
map fst :: [(b, b1)] -> [b]
onde ele escolheu nomesb
eb1
. É claro que a renomeação deve ocorrer, mas basta começar coma
, b
, ... teria dado
map fst :: [(a, b)] -> [a]
em vez disso, que acho um pouco mais legíve