メモ foldl foldr

たたみこみ関数。
それぞれ型は

foldl::(a -> b -> a) -> a -> [b] -> a
foldr::(a -> b -> b) -> b -> [a] -> b

foldlが左に、foldrが右に。

foldl (-) 0 [1..5] -- -> (((((0 - 1) - 2) - 3) - 4) - 5)
foldr (-) 0 [1..5] -- -> (1 - (2 - (3 - (4 - (5 - 0)))))

となる。
引数としてわたす関数が結合則をみたすならばとくに問題ないけど、結合則をみたさない場合は結果が変わるので注意。