haskell - 什么数据 {-# 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)
.
解决方案
这是一个 GHC 编译指示:
UNPACK 向编译器指示它应该将构造函数字段的内容解压缩到构造函数本身,从而消除间接级别。
源代码:https ://downloads.haskell.org/~ghc/7.0.3/docs/html/users_guide/pragmas.html
这些感叹号的含义是对这些字段执行严格要求。
推荐阅读
- r - R: Create an R function to insert multiple specified lagged or differenced time series into a formula
- mysql - 按重命名列排序表
- prolog - SWI-Prolog 分区谓词在 REPL 中的工作方式与在程序中的不同
- ruby-on-rails - Action cable not working in rails 5.1.7 on production environment
- javascript - 反应:移动(iPhone)上的onClick需要2次点击?
- laravel - How to Generate Leave Balance Table for a particular employee using Laravel
- mysql - 在Mysql中将字符串转换为字符
- c++ - Xcode 无法将 const 方法识别为 const
- generics - kotlin 中的泛型。如何使用泛型传递抽象类的实现
- javascript - 使用 React 设置 backgroundImage 页面的全高