foldl と foldr
定義をド忘れしてた。
foldl :: (a -> b -> a) -> a -> [b] -> a foldl f z [x1, x2, ..., xn] == f (.. (f (f z x1) x2)..) xn == (..((z `f` x1) `f` x2)..) `f` xn
foldr :: (a -> b -> b) -> b -> [a] -> b foldr f z [x1, x2, ..., xn] == f x1 (f x2 .. (f xn z)..) == x1 `f` (x2 `f` .. (xn `f` z)..)
f は中置演算子だと思ったほうが覚えやすいな。