gpt4 book ai didi

haskell - 有人可以在 Haskell 中向我解释这种 Integer 模块化行为吗?

转载 作者:行者123 更新时间:2023-12-03 14:54:32 24 4
gpt4 key购买 nike

*Test> ((3^40) `mod` 3) :: Int
2
*Test> ((3^40) `mod` 3)
0

为什么会这样?我正在使用 GHCi 7.0.3。如果这不是错误,请解释 Integral/Int 如何在 haskell 中工作,或提供解释链接。

谢谢。

最佳答案

你只是超出范围,3^40数字太大,甚至无法放入 64 位 int:

Prelude> 3^40 :: Int
-6289078614652622815
Prelude> 3^40 :: Integer
12157665459056928801
Integer另一方面, type 是无界的,并且无论大小都接受所有数字。在第二种情况下(你得到 0 结果)你得到一个类型 Integer推断。

关于haskell - 有人可以在 Haskell 中向我解释这种 Integer 模块化行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15098510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com