gpt4 book ai didi

haskell - Int 在 Haskell 中是如何定义的?

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

Learn You A Haskell for Great Good! Miran Lipovača 的书在章节 Making Our Own Types and Typeclasses 中说Haskell 的 Int 类型的想法可以这样表示:

data Int = -2147483648 | -2147483647 | ... | -1 | 0 | 1 | 2 | ... | 2147483647  

尽管如此,它说它只是作为演示目的起作用,但它没有说明 Int 是如何实际定义的。 Int 是由编译器特别定义的,还是可以用普通的 Haskell 代码定义?

最佳答案

Int是魔术 - 由编译器定义。正如其他作者所说,它实际上并未定义为代数数据类型,它是实现定义的,很像 Double !

不过有一些规则,Int保证至少是一个 30 位有符号整数。 Int必须能够表达 [-2^29, 2^29) 范围内的每个值(上限除外)。在实践中,Int由编译器定义为等效于 32 位整数值。原因是 Int可以以某些机器字无法优化的方式进行优化。指针标记对于 Haskell 性能很重要,因此实现可以自由使用一些位。

如果你想要保证大小的值,Data.IntInt32 , 和 Data.WordWord32 ,它保证与 32 位有符号和无符号机器整数完全对应。

关于haskell - Int 在 Haskell 中是如何定义的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21959101/

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