我是一个haskell初学者,最近在the haskell wiki上阅读了有关严格性分析的内容。 。 GHC user's guide内容如下:
The strictness analyser figures out when arguments and variables in a function can be treated 'strictly' (that is they are always evaluated in the function at some point).
我还读到过一般情况下何时可以推断出严格性。然而,作为一个初学者,我并不总是确定 ghc 是否真的将我的代码片段视为严格的,我打算严格地对待我的代码。
目前,除了向程序提供大数据之外,我没有其他方法可以确定是否正在进行严格分析。
有没有办法询问 ghc 是否可以推断给定的代码是严格的?
最佳答案
我见过的实际验证 GHC 推断严格性的唯一方法是读取称为 Core 的已编译程序的中间表示。
有关学习阅读核心输出的一些资源:
但是,另一种方法是简单地告诉 GHC 应该严格评估哪些表达式,例如,使用 BangPatterns
语言扩展或 seq
函数。
关于haskell - 如何判断 GHC 是否真正推断出严格性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26900440/