[英]Strange Haskell/GHC output
有人可以向我解釋這個輸出嗎? 我在Haskell全新,不知道為什么會這樣。
import Data.Char
o=ord 'f'
main=do print (o==102)
print (mod (102^2087) 9797)
print (mod (o^2087) 9797)
輸出:
xxx:~/Arbeitsfläche$ runhaskell st.hs
True
5253
0
GHC版本7.4.1,Ubuntu
這是因為o
具有類型Int
,其具有有限的范圍,因此(mod (o^2087) 9797)
也是Int
。 然而,常數102
是通用數字類型( Num a => a
)並且(mod (102^2087) 9797)
是通用整數類型( Integral a => a
)。 當必須將此泛型整數類型解析為具體類型(在應用print
時發生)時,默認分辨率是選擇Integer
,一種無界積分類型。 有關此解決方案的詳細信息,請參見4.3.4模糊類型和 Haskell 2010報告的 重載數值操作的默認值 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.