it is important to understand it alright. I remember spending half a day over unexpected (for me) results of recursive functions that contained folds. In the end I settled for TChan - a queue with predictable behaviour (my view of it - not necessarily correct).
Prelude Control.Applicative> foldl (<|>) Nothing [Just 1, Nothing, Just 2, Nothing]
Just 1
Prelude Control.Applicative> foldr (<|>) Nothing [Just 1, Nothing, Just 2, Nothing]
Just 1
? I guess this is due to the nature of (<|>), no?
Anyway, I'd use asum instead of fold_ for Alternatives.
for non-Alternative cases, Erlang analogy seems to be a useful rule of thumb for foldl & foldr over shorter lists .
After all, what matters most is what results to expect. foldl and foldr may yield different results for the same list & similar processing fn (save for different arg order).