foldl foldr

reduceはHaskellではfoldl、foldrあたりのことらしい。
しかし。
foldlの説明をみて「畳み込み」っていわれてもピンときません。
Rubyのinjectで「リストの要素間に二項演算を『注入』する」っていうのが僕には一番理解しやすかった。

で、だいたい意味は分かったがfoldlとfoldrがどう違うのかはまだピンとこない。
いや、なんとなくは分かるんだけどさ・・・。
ちゃんと書いて確かめる。

Prelude> let f = (\a b -> "(" ++ a ++ "," ++ b ++ ")")
Prelude> foldl1 f ["a","b","c"]
"*1"
Prelude> 

なるほど。