foldlが無限リストを扱えない件についての確認
fold(l/r) (++) [] l
という呼出で、lが無限リストの場合式を評価して最初の要素を得ようとした時に、foldlは計算が終わらないがfoldrは結果を得ることができる。
これは、foldlの呼出は, (++)をf, lを[a, b, ...] とすると
f (f ... (f [] a) ) .
となって、fの入れ子の深さが無限になってしまう。
foldrは
f a (f b (....
となるので、遅延評価の力で最初の要素をただちにに得られる。