Warum `foldl` und `foldr` in Haskell nicht das sind, was du denkst
Differences Between `Foldl` and `Foldr`

Alexis King erklärt in diesem wieder veröffentlichten Artikel, dass `foldl` und `foldr` die Liste in derselben Reihenfolge durchlaufen – der Unterschied liegt in der Assoziativität. In einer lazy Sprache wie Haskell baut das faule `foldl` große Thunks auf und kann den Speicherbedarf von konstant auf linear treiben; `foldl'` löst das durch strikte Auswertung. `foldr` hingegen kann durch seine Faulheit unendliche Listen verarbeiten und Arbeit sparen, wenn die Akkumulationsfunktion im zweiten Argument lazy ist. Die Faustregel: strikte Funktionen mit `foldl'`, lazy Funktionen mit `foldr`, und `foldl` oder `foldr'` nie auf Listen verwenden.
In beiden Ausdrücken erscheinen die Elemente der Liste in derselben Reihenfolge – von links nach rechts –, aber die Gruppierung ändert sich.