我在 Haskell 中有一个常量声明——我可以强制它提前进行评估吗?我看到一些看起来大致像这样的代码,
myList = [(a, b), (c, d)]
...
map (f . fst) myList
在我分析它时花点时间fst
(它确实有 1.68 亿次通话)。的二进制表示myList
非常小,例如,可以复制到全局内存中[如果这是一个 C 程序]。我-O3 -optc-O3
当然在编译。
非常感谢!
为自定义类型生成 Lift 实例
在 sclv 的回答中给调用的任何表达式都lift
必须是 Lift 的一个实例。有一个名为的库th-lift
,它将为自定义数据类型生成 Lift 实例。请参阅该软件包的文档。