Haskell中数据声明中的感叹号

Haskell中数据声明中的感叹号,haskell,Haskell,此Haskell数据声明中的感叹号是什么意思: data Sample = First !Integer | Second !String 它使这个领域变得严格- 如果您将其添加到字段中,则确保在使用构造函数时计算该值-这通常有助于避免空间泄漏(从一个巨大的thunk链) 如果您使用GHC8,则默认情况下,如果您使用它会使此字段变得严格- 如果您将其添加到字段中,则确保在使用构造函数时计算该值-这通常有助于避免空间泄漏(从一个巨大的thunk链) 如果您使用GHC8,则默认情况下,如果您使用这

此Haskell数据声明中的感叹号是什么意思:

data Sample = First !Integer | Second !String
它使这个领域变得严格-

如果您将其添加到字段中,则确保在使用构造函数时计算该值-这通常有助于避免空间泄漏(从一个巨大的thunk链)

如果您使用GHC8,则默认情况下,如果您使用

它会使此字段变得严格-

如果您将其添加到字段中,则确保在使用构造函数时计算该值-这通常有助于避免空间泄漏(从一个巨大的thunk链)


如果您使用GHC8,则默认情况下,如果您使用

这是一种爆炸模式,则可以使用它。这意味着构造是字符串,因此
First undefined==undefined
。这是一个bang模式。这意味着构造是字符串,因此
First undefined==undefined