:: (a -> Bool) -> (a -> Bool) -> (a -> Bool) package:foldl

>>> fold (handles (filtered even) sum) [1..10]
30
>>> foldM (handlesM (filtered even) (L.mapM_ print)) [1..10]
2
4
6
8
10