fold関数
Foldable型クラスのmethodの1つ
FoldableからMonoidを作る
定義
code:1.hs
fold :: (Monoid m, Foldable t) => t m -> m
fold = foldr mappend mempty
foldMapをやや特殊化したものである
foldMapの引数fに、何もしないidを与える
code:2.hs
foldMap f = foldr (mappend . f) mempty
fold = foldMap id
このfoldMapの定義をインライン展開したものが、1.hsmrsekut.icon
意味としては全く同じ
具体例
MonodとしてList、 FoldableとしてListを選択
code:hs
concat :: a -> a
concat = foldr (++) []
使用例
code:hs
fold 1],2,[3 -- 1,2,3
concat 1],2,[3 -- 1,2,3
参考
第34回 様々なデータ構造でfoldを使えるようにするFoldableクラス(2ページ目) | 日経クロステック(xTECH)