我正在阅读Programming in Haskell书籍和测试,它提供了GHCi口译员的例子。事实证明,GHCi和Hugs解释器中的Int
类型行为存在差异。根据“Haskel编程”第3章,2^31 :: Int
应该超出Int
类型的范围。同时,在GHCI解释,我得到:为什么Int 2^31不会超出GHCi的范围?
Prelude> 2^31 :: Int
2147483648
而拥抱它的行为就像书上说:
Hugs> 2^31 :: Int
-2147483648
在GHCI我甚至可以检查,如果结果是Int
Prelude> let x = 2^31 :: Int
Prelude> :type x
x :: Int
Prelude> x
2147483648
类型
描述的差异的来源是什么?我应该在Hugs中运行书中的例子还是使用GHCi,这似乎是学习Haskell的推荐选择?我会很感激你的帮助。
你应该只是卸载拥抱 – alternative
@alternative:我认为下载的拥抱应该被取消!或者也许移动到一个模糊的位置,并受某种Haskell特定的CAPTCHA的保护,它需要详细了解Haskell98和Haskell2010之间的差异来回答... – yatima2975