foldl, applied to a binary operator, a starting value (typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right:
> foldl f z [x1, x2, ..., xn] == (...((z `f` x1) `f` x2) `f`...) `f` xn
The list must be finite.
foldl1 is a variant of foldl that has no starting value argument, and thus must be applied to non-empty lists.
A strict version of foldl.
Fold over the elements of a structure, associating to the left, but strictly.
Monadic fold over the elements of a structure, associating to the left, i.e. from left to right.