haskell - 如何判断 GHC 是否真正推断出严格性?

标签 haskell ghc

我是一个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/

相关文章:

http - ByteString 需要不同的 ByteString

haskell - Haskell 中 Eq 子类的默认定义

Haskell 无限循环,只需简单的 re-let 操作

haskell - 导入 "base"系统.IO

postgresql - haskell postgresql-简单不兼容类型_int8和Int64(和整数)

haskell - 如果我传递不同类型的 `fun::(SomeTypeClass a) => Maybe a -> Result` 值, `Nothing` 的结果会改变吗?

haskell - 同时派生 Generic 和 ToJSON?

haskell - 需要一个使用 GHC 解析和类型检查 Haskell 的教程

haskell - Haskell 中的基本 I/O 性能

performance - Haskell:对常量表达式进行不必要的重新计算