我很困惑haskell编译器如何推断比我所期望的多态性更less的types,例如,当使用无点定义时。 看起来问题是“单态限制”,在编译器的旧版本上默认是这样的。 考虑下面的haskell程序: {-# LANGUAGE MonomorphismRestriction #-} import Data.List(sortBy) plus = (+) plus' x = (+ x) sort = sortBy compare main = do print $ plus' 1.0 2.0 print $ plus 1.0 2.0 print $ sort [3, 1, 2] 如果我用ghc编译这个,我没有得到erros,可执行文件的输出是: 3.0 3.0 [1,2,3] 如果我将main更改为: main = do print $ plus' 1.0 2.0 print $ […]