map はすぐにわかった。そして、map がわかってしまえば、filter や find や iter もすぐに理解できた。でも、fold ってのはどうにも意味不明だった。 map 関数の説明はわかりやすい。リストの全要素に関数を適用して新しいリストを作る。大体どんな文献でもこの簡潔な説明を見ることができるし、そこからおおよその機能は想像できるだろう。たとえ、高階関数がどうとか、関数がファーストクラスのオブジェクトだとか、そんなことを知らなくとも。 しかし fold である。調べ始めてまず目に飛び込んでくるのは、fold 関数は「畳み込み」であるという謎の説明だ。全くイマジネーションが働かない。つーか「畳み込み」なんて初耳ですけど、と戸惑うばかりだ。で、そんなときは大抵、どうせ使わないよとバカの壁を発動させるか、あるいは、サンプル コードを見て理解しようということになるのだが、後者を選択し