Haskellのfoldlとfoldr、その決定的な違い

Differences Between `Foldl` and `Foldr`

Haskellのfoldlとfoldr、その決定的な違い

Haskellのfoldlとfoldrは、単に「左から」と「右から」の違いではない。結合性の違いが評価順序に影響し、遅延評価ではfoldlがサンクを積み上げてメモリを浪費する一方、foldrは無限リストを扱えるなど、実用的な差が生まれる。厳密な蓄積関数にはfoldl'を、遅延な第二引数にはfoldrを使うのが定石だ。

foldrは無限リストを操作できるが、foldlにはそれができない。

この日のほかの記事

2026-10-05