Haskell 中的类型声明中的符号 `!` 是什么意思?
What does the symbol `!` mean in type declarations in Haskell?
在我对 Haskell 的研究中,我看到了类型声明中使用的符号 !
。看一个例子:
data Foo = MkFoo
{ _bar :: !Bar
, ...
}
我的问题是:为什么要使用它,与没有它的声明有什么区别?
标有感叹号的字段在相关构造函数的应用程序站点上变得严格。例如,您的数据声明将与没有 !
完全相同,但在您的代码使用 MkFoo
:
的任何地方编写以下内容
bar `seq` MkFoo { _bar = bar }
完整详情为 in the Report。
在我对 Haskell 的研究中,我看到了类型声明中使用的符号 !
。看一个例子:
data Foo = MkFoo
{ _bar :: !Bar
, ...
}
我的问题是:为什么要使用它,与没有它的声明有什么区别?
标有感叹号的字段在相关构造函数的应用程序站点上变得严格。例如,您的数据声明将与没有 !
完全相同,但在您的代码使用 MkFoo
:
bar `seq` MkFoo { _bar = bar }
完整详情为 in the Report。