Haskell: tipo inferência e composição de funções

Esta questão foi inspirada por esteresponda para outra pergunta, indicando que você pode remover todas as ocorrências de um elemento de uma lista usando uma função definida como:

removeall = filter . (/=)

Trabalhando com lápis e papel dos tipos defilter, (/=) e(.), a função tem um tipo de

removeall :: (Eq a) => a -> [a] -> [a]

que é exatamente o que você esperaria com base em seu contrato. No entanto, com o GHCi 6.6, recebo

gchi> :t removeall
removeall :: Integer -> [Integer] -> [Integer]

a menos que eu especifique o tipo explicitamente (caso em que funciona bem). Por que Haskell está inferindo um tipo específico para a função?

questionAnswers(2)

yourAnswerToTheQuestion