This pretty much explains it: http://crypto.stanford.edu/~blynn/haskell/foldl.html here I just review the article.
The rule of thumb is this:
- if you want short circuiting on foldr, use a lazy on the right combiner
- if you want short circuiting on foldl, use a lazy on the left combiner