我是一名哈斯克尔初学者,最近我读到了关于the haskell wiki的严格性分析。 GHC user's guide读到:
严格性分析器可以确定函数中的参数和变量何时可以严格对待' (也就是说,它们总是在某个时刻在函数中进行评估)。
我还读到了一般情况下何时可以推断出严格性。但是,作为初学者,我并不总是确定ghc是否真的将我的意图严格的代码视为严格的。
目前,我没有其他方法可以确定是否正在进行严格的分析,而不是使用大数据来提供程序。
有没有办法问ghc是否可以推断给定的代码是严格的?
答案 0 :(得分:8)
我见过的唯一方法实际上验证了GHC推断严格性是读取编译程序的核心的中间表示。
学习阅读核心输出的一些资源:
然而,另一种方法是简单地告诉GHC应该严格评估哪些表达式,例如,使用BangPatterns
语言扩展或seq
函数。