什么数据 -# UNPACK #- !Size !a !(Set a) !(Set a) 在 Haskell 中意味着什么
Posted
技术标签:
【中文标题】什么数据 -# UNPACK #- !Size !a !(Set a) !(Set a) 在 Haskell 中意味着什么【英文标题】:What data -# UNPACK #- !Size !a !(Set a) !(Set a) means in Haskell什么数据 -# UNPACK #- !Size !a !(Set a) !(Set a) 在 Haskell 中意味着什么 【发布时间】:2019-02-18 16:53:12 【问题描述】:我不熟悉 Haskell,但想看看它的一些定义。我正在查看Set 并看到了这个:
data Set a = Bin -# UNPACK #- !Size !a !(Set a) !(Set a)
| Tip
想知道那条评论在做什么(如果它在做某种代码注入魔法),感叹号的含义是什么以及!Size !a !(Set a) !(Set a)
的整体陈述。
【问题讨论】:
【参考方案1】:这是一个 GHC 编译指示:
UNPACK 向编译器指示它应该将构造函数字段的内容解压缩到构造函数本身,从而移除一个间接级别。
源代码:https://downloads.haskell.org/~ghc/7.0.3/docs/html/users_guide/pragmas.html
这些感叹号的含义是对这些字段强制执行严格。
【讨论】:
更新了我的答案。 @LancePollard 另见***.com/questions/993112/…以上是关于什么数据 -# UNPACK #- !Size !a !(Set a) !(Set a) 在 Haskell 中意味着什么的主要内容,如果未能解决你的问题,请参考以下文章