我是一名haskell初学者,最近我读到了关于haskell wiki的严格性分析.GHC用户指南内容如下:
严格性分析器可以确定函数中的参数和变量何时可以"严格"处理(即它们总是在某个时刻在函数中进行求值).
我还读到了一般情况下何时可以推断出严格性.然而,作为一个初学者,我并不总是知道如果GHC居然把我的一段代码,我打算要严格要求,为严格.
目前,我没有其他方法可以确定是否正在进行严格的分析,而不是用大数据提供程序.
有没有办法问ghc是否可以推断给定的代码是严格的?
我见过的唯一方法实际上验证了GHC推断严格性是读取编译程序Core的中间表示.
学习阅读核心输出的一些资源:
然而,另一种方法是简单地告诉GHC应该严格评估哪些表达式,例如,通过使用BangPatterns
语言扩展或seq
函数.