Я играл с функцией uncurry
в GHCi и обнаружил то, чего я совсем не мог понять. Когда я применяю uncurry
к функции (+)
и привязываю это к некоторой переменной, как в приведенном ниже коде, компилятор определяет ее тип как специфичный для Integer
:
Prelude> let add = uncurry (+)
Prelude> :t add
add :: (Integer, Integer) -> Integer
Однако, когда я спрашиваю тип следующего выражения, я получаю (как я ожидал) правильный результат:
Prelude> :t uncurry (+)
uncurry (+) :: (Num a) => (a, a) -> a
Что могло бы вызвать это? Это специфично для GHCi?
То же самое применимо к let add '= (+)
.
ПРИМЕЧАНИЕ: Я не смог воспроизвести это, используя скомпилированный файл .