foldlとfoldr
第1引数の型が異なる
code:hs
foldl :: (a -> b -> a) -> a -> b -> a code:hs
foldr :: (b -> a -> a) -> a -> b -> a JSの.reduceに相当するのはfoldl
foldlは左(先頭)から畳み込む
foldl f z [a, b, c]は、 f (f (f z a) b) c
foldrは右(末尾)から畳み込む
foldr f z [a, b, c]は、f a (f b (f c z))
末尾再帰かどうか
foldlは、末尾再帰である
foldrは、末尾再帰でない
fが結合法則が成り立つなら、lもrも全く同じ様に使用できるのねmrsekut.icon
accがどちらになるか、という違いもあるか