minBound
在检查不同整数类型的大小( , maxBound
)和“十进制表示的长度”时,我碰巧看到了一些奇怪的行为。
使用 GHCi:
Prelude> :{
Prelude| let mi = minBound
Prelude| ma = maxBound
Prelude| le = fromIntegral $ length $ show ma
Prelude| in [mi,ma,le] :: [Int]
Prelude| :}
[-9223372036854775808,922372036854775807,2]
^
在我期望的最后一个地方19
。
我的第一个猜测是maxBound
默认为()
因此 yield 2
,但我不明白因为ma
应该是一个Int
显式类型注释 ( :: [Int]
) - 并且通过引用透明性,所有命名的符号ma
都应该是相等的。
如果我将上面的语句放在一个文件中并将其加载到 GHCi 中,我会得到正确的结果。
那么为什么我会得到错误的结果呢?