Haskellのfoldlとfoldr、その決定的な違い
Differences Between `Foldl` and `Foldr`

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