NFData型クラス
NFDataとはNormal Form Data(正規形データ)のこと 関数は正規形にできない。関数を除くためにわざわざDataと言っているmrsekut.icon
正規形まで簡約する関数などを提供する型クラス
seq関数では弱頭部正規形までしか簡約しなかった、NFDataでは最後まで簡約する 定義
code: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で十分
code:hs
instance NFData Char
複合的な型は、rnfとseqで連結すればいい
code:hs
instance NFData a => NFData (Tree a) where
rnf Empty = ()
rnf (Branch l a r) = rnf l seq rnf a seq rnf r
参考