3
這個微小的Haskell程序從控制檯讀取兩個空間分隔的數字,並打印他們的總和:爲什麼Integer在類型變量應該模糊時被推斷?
main = do
line <- getLine
let n1:n2:_ = map read $ words line
print $ n1 + n2
,我期望,因爲含糊不清的編譯失敗:+
限制的n1
和n2
類型Num
類型類和不是特定的類型。然而,GHC 7.10成功編譯它,推斷出Integer
類型(替換+
, /
將推斷類型更改爲Double
)。對此的解釋是什麼?
我知道關聯問題中的答案提到了違約,但仍然將問題標記爲「單態限制是什麼?」的副本。由於單態限制在這裏不重要,因此是誤導性的。 –