Map each element of a structure to a monadic action, evaluate these
actions from left to right, and collect the results. For a version
that ignores the results see
mapM_.
Examples
mapM is literally a
traverse with a type signature
restricted to
Monad. Its implementation may be more efficient
due to additional power of
Monad.