符号是什么Haskell中的类型声明中的平均值



在我对Haskell的研究中,我看到了在类型声明中使用的符号!。参见示例:

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

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

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

bar `seq` MkFoo { _bar = bar }

全部细节见报告。

最新更新