我的理解是Int值是指向thunk(双重间接)的指针,而未装箱的Int#只是指向32/64位int的指针.那是对的吗?指针如何编码它指的是未装箱的值?
所述的Haskell标准规定,一个Int是"A固定精度整数类型至少与所述范围[-2 ^ 29 .. 2 ^ 29-1]".在GHC中是否有一些优化,其中那些额外的位用于消除间接?
Tra*_*ies 13
该GHC文档有一些很好的信息.但基本上,你说一个Int值是指向thunk的指针是正确的.但是,未装箱的值不是指向未装箱值的指针,而是未装箱的值本身.此外,Haskell标准报告仅给出了范围的下限Int.IIRC,GHC Int有超过30位.
我不认为GHC使用额外的未装箱类型来存储任何元数据,但它确实使用指针位来执行此操作.有关详细信息,请参阅此页面.
| 归档时间: |
|
| 查看次数: |
644 次 |
| 最近记录: |