データ構造の中のすべての要素にアクセスする高階関数には,個々の要素ごとに関数を適用するmapと,すべての要素を使って計算を行うfoldの大きく二つがあります(参考リンク1,参考リンク2)。第3回で説明したように,mapは様々なデータ構造で利用できるようFunctorクラスを使って一般化されています。実は,foldも様々なデータ型に対して扱えるよう型クラスを使って一般化されています。 foldを一般化するFoldableクラスは,baseパッケージのData.Foldableモジュールで用意されています。今回はFoldableクラスについて説明します。 Foldableクラスで定義されているメソッド foldには,第7回で紹介したfoldrと第9回で説明したfoldlの二つがあります。Foldableクラスには,foldrメソッドとfoldlメソッドの両方が存在します。加えて,様々なfold