**Packages**- containers
- base

Promote a function to a monad, scanning the monadic arguments from left to right. For example,
> liftM2 (+) [0,1] [0,2] = [0,2,1,3]
> liftM2 (+) (Just 1) Nothing = Nothing

Lift a binary function to actions.

zipWith generalises zip by zipping with the function given as the first argument, instead of a tupling function. For example, zipWith (+) is applied to two lists to produce the list of corresponding sums.

scanl is similar to foldl, but returns a list of successive reduced values from the left:
> scanl f z [x1, x2, ...] == [z, z `f` x1, (z `f` x1) `f` x2, ...]
Note that
> last (scanl f z xs) == foldl f z xs.

flip f takes its (first) two arguments in the reverse order of f.

Fold over the elements of a structure, associating to the left, but strictly.

The deleteFirstsBy function takes a predicate and two lists and returns the first list with the first occurrence of each element of the second list removed.

The intersectBy function is the non-overloaded version of intersect.

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.

A strict version of foldl.

Fold over the elements of a structure, associating to the right, but strictly.

foldr, applied to a binary operator, a starting value (typically the right-identity of the operator), and a list, reduces the list using the binary operator, from right to left:
> foldr f z [x1, x2, ..., xn] == x1 `f` (x2 `f` ... (xn `f` z)...)

The non-overloaded version of insert.

chainl p op x parses zero or more occurrences of p, separated by op. Returns a value produced by a *left* associative application of all functions returned by op. If there are no occurrences of p, x is returned.

chainr p op x parses zero or more occurrences of p, separated by op. Returns a value produced by a *right* associative application of all functions returned by op. If there are no occurrences of p, x is returned.