2015-05-10 61 views
3

沒有評估如果我給你一個變種,以maxBound:功能在GHCI

let bInt = maxBound 

bInt打印()

,但如果我鍵入賓特

bInt :: Int 
prints : 9223372036854775807 

爲什麼賓特沒有評估評價直到我輸入

bInt (bInt :: Int) ? 

回答

4

maxBoundBounded類型類中的函數。默認情況下,GHCi似乎選擇()的實例,該實例返回()。您可以通過添加類型簽名來強制它使用另一個實例。

let bInt :: Int; bInt = maxBound 
bInt -- 9223372036854775807 

let x = maxBound 
x ::() --() 
x :: Bool -- True 
x :: Char -- '\1114111'