Talk:Fold (higher-order function)
Appearance
foldl and foldr
I see, the paragraph about foldl and foldr has nicely the facts correct and conclusions all wrong, but I don't want to think about the correct examples right now.
Concatenation is not commutative, right, but it still doesn't matter whether foldl or foldr is used, because concatenation is still associative.
Foldr "starts" from the right, right, but that's still the correct fold for infinite lists because the lazy processing starts to produce co-data from the "end" (outer scope). You can try with
foldr (:) [] [1..] foldr (&&) True ([True,False] ++ repeat True)