我一直在使用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' = (+)
。
注意:我无法使用已编译的文件来重现它。