【发布时间】:2011-06-27 07:23:30
【问题描述】:
我一直在使用 GHCi 中的 uncurry 函数,我发现了一些我根本无法理解的东西。当我将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' = (+)。
注意:我无法使用已编译的文件重现该内容。
【问题讨论】:
标签: haskell types ghc monomorphism-restriction