Quando a redução eta pode alterar o tipo de uma função?
O que exatamente está acontecendo com o seguinte?
<code>> let test = map show > :t test test :: [()] -> [String] > :t (map show) (map show) :: Show a => [a] -> [String] </code>
Eu estou querendo saber como eu não percebi isso antes? Na verdade, eu encontrei o problema com "map fromIntegral" em vez de mostrar - meu código não compila com a forma pointfree, mas funciona bem sem redução de eta.
Existe uma explicação simples de quando a redução eta pode mudar o significado do código Haskell?