【发布时间】:2016-02-03 03:13:21
【问题描述】:
这个小小的 Haskell 程序从控制台读取两个以空格分隔的数字并打印它们的总和:
main = do
line <- getLine
let n1:n2:_ = map read $ words line
print $ n1 + n2
我预计编译会因为歧义而失败:+ 将 n1 和 n2 的类型限制为 Num 类型类,而不是特定类型。然而 GHC 7.10 成功编译它推断 Integer 类型(将 + 替换为 / 将推断类型更改为 Double)。对此有何解释?
【问题讨论】:
-
我知道链接问题中的答案提到了默认,但仍将问题标记为“什么是单态限制?”的重复项。具有误导性,因为单态限制与此处无关。