generated at
NFData型クラス
NFDataとはNormal Form Data(正規形データ)のこと
関数は正規形にできない。関数を除くためにわざわざDataと言っているmrsekut
正規形まで簡約する関数などを提供する型クラス
seq関数では弱頭部正規形までしか簡約しなかった、NFDataでは最後まで簡約する
Control.DeepSeqで提供される



定義
hs
class NFData a where rnf :: a -> () rnf a = a `seq` ()
rnf reduce to normal-formの略
引数 a を正規形に変換して () を返す


force :: NFData a => a -> a
deepseq :: NFData a => a -> b -> b


instanceの定義例
primitiveな型は seq で十分
hs
instance NFData Char
複合的な型は、 rnf seq で連結すればいい
hs
instance NFData a => NFData (Tree a) where rnf Empty = () rnf (Branch l a r) = rnf l `seq` rnf a `seq` rnf r


参考