严格的领域

data 声明中,使用 bang(!)为类型添加前缀会使该字段成为严格字段。当应用数据构造函数时,这些字段将被评估为弱头正常形式,因此字段中的数据始终保持弱头正常形式。

严格的字段可以用于记录和非记录类型:

data User = User
    { identifier :: !Int
    , firstName :: !Text
    , lastName :: !Text
    }

data T = MkT !Int !Int