Wann kann eta reduction den Typ einer Funktion ändern?
Was genau ist mit dem Folgenden los?
<code>> let test = map show > :t test test :: [()] -> [String] > :t (map show) (map show) :: Show a => [a] -> [String] </code>
Ich frage mich, wie ich das vorher nicht bemerkt habe. Ich bin auf das Problem mit "map fromIntegral" gestoßen, anstatt es anzuzeigen. Mein Code wird nicht mit der pointfree-Form kompiliert, funktioniert aber ohne eta-Reduktion.
Gibt es eine einfache Erklärung, wann die eta-Reduktion die Bedeutung von Haskell-Code ändern kann?