嚴格的領域

data 宣告中,使用 bang(!)為型別新增字首會使該欄位成為嚴格欄位。當應用資料建構函式時,這些欄位將被評估為弱頭正常形式,因此欄位中的資料始終保持弱頭正常形式。

嚴格的欄位可以用於記錄和非記錄型別:

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

data T = MkT !Int !Int