首页 > 解决方案 > 什么数据 {-# UNPACK #-} !Size !a !(Set a) !(Set a) 在 Haskell 中是什么意思

问题描述

我不熟悉 Haskell,但想看看它的一些定义。我正在看Set并看到这个:

data Set a    = Bin {-# UNPACK #-} !Size !a !(Set a) !(Set a)
              | Tip

想知道该评论在做什么(如果它在做某种代码注入魔术),以及感叹号的含义是什么以及!Size !a !(Set a) !(Set a).

标签: haskellset

解决方案


这是一个 GHC 编译指示:

UNPACK 向编译器指示它应该将构造函数字段的内容解压缩到构造函数本身,从而消除间接级别。

源代码:https ://downloads.haskell.org/~ghc/7.0.3/docs/html/users_guide/pragmas.html

这些感叹号的含义是对这些字段执行严格要求。


推荐阅读