【问题标题】: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)的整体陈述。

【问题讨论】:

    标签: haskell set


    【解决方案1】:

    这是一个 GHC 编译指示:

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

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

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

    【讨论】:

    猜你喜欢
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    相关资源
    最近更新 更多