Kiedy redukcja eta może zmienić typ funkcji?

Co dokładnie dzieje się z następującymi?

<code>> let test = map show

> :t test
test :: [()] -> [String]

> :t (map show)
(map show) :: Show a => [a] -> [String]
</code>

Zastanawiam się, jak nie zauważyłem tego wcześniej? W rzeczywistości napotkałam problem z „map fromIntegral” zamiast pokazywać - mój kod nie kompiluje się z formularzem bez znaku, ale działa bez redukcji eta.

Czy istnieje proste wyjaśnienie, kiedy redukcja eta może zmienić znaczenie kodu Haskella?

questionAnswers(1)

yourAnswerToTheQuestion