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

questionAnswers(1)

yourAnswerToTheQuestion