Когда эта редукция может изменить тип функции& #39;s?

Что именно происходит со следующим?

> let test = map show

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

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

Интересно, как я раньше этого не замечал? На самом деле я столкнулся с проблемой с «map fromIntegral», а не с отображением -, что мой код не компилируется с бесточечной формой, но отлично работает без сокращения eta.

Есть ли простое объяснение того, когда уменьшение эта может изменить смысл кода на Haskell?

6
задан sacheie 25 April 2012 в 06:22
поделиться