haskell - 在 Haskell 的类型声明中符号 `!` 是什么意思?

标签 haskell types functional-programming programming-languages type-systems

在我对 Haskell 的研究中,我看到符号 ! 用于类型声明。看一个例子:

data Foo = MkFoo
  { _bar :: !Bar
    , ...
  }

我的问题是:为什么要使用它,与没有它的声明有什么区别?

最佳答案

标有感叹号的字段在相关构造函数的应用程序站点上变得严格。例如,您的数据声明将与没有 ! 的情况完全相同,但是在您的代码使用 MkFoo 的任何地方编写以下内容:

bar `seq` MkFoo { _bar = bar }

详细信息为 in the Report .

关于haskell - 在 Haskell 的类型声明中符号 `!` 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70084195/

相关文章:

scala - 最佳功能方法

javascript - TypeScript:有什么技术可以中断递归条件类型推断吗?

sqlite - Haskell SQLite-简单类型错误

haskell - 字符转字符串函数

haskell - 牛顿方法类型类 Haskell

types - 在 Haxe 中,如何将类型/类添加到带有宏的模块中?

Clojure:使用多个参数的函数进行过滤

list - Haskell - 是否存在替换功能?

java - 关于java中泛型转换的一些知识

types - OCaml 类型转换的区别