首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在本例中,UNPACK杂注做了什么?

在本例中,UNPACK杂注做了什么?
EN

Stack Overflow用户
提问于 2015-11-26 14:34:15
回答 1查看 1.9K关注 0票数 23

我很难理解UNPACK在Haskell中是如何工作的。例如,考虑以下数据声明:

代码语言:javascript
复制
data P a b = P !a !b
data T = T {-# UNPACK #-} !(P Int Int)

数据类型T将如何解包?它是否等同于

代码语言:javascript
复制
data T' = T' !Int !Int

或者,Int将被进一步拆解:

代码语言:javascript
复制
data T'' = T'' Int# Int#

?关于

代码语言:javascript
复制
data U = U {-# UNPACK #-} !(P Int (P Int Int))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-26 15:55:29

GHC documentationUNPACK杂注的描述如下:

如何解压数据类型T

data T = T (P Int Int)对应于

因此,data T = T {-# UNPACK #-} !(P Int Int)对应于

简单地说,UNPACK将构造器P的内容解压到构造器T的字段中,删除了一级间接和一个构造器头部(P)。

data T = T {-# UNPACK #-} !(P Int Int)不像data T'' = T'' Int# Int#那样“紧凑”

关于什么?

数据U=U {-#解包#-} !(P整数(P整数))

类似地,data U = U (P Int (P Int Int))对应于

data U = U {-# UNPACK #-} !(P Int (P Int Int))对应于

资源

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33931991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档