:: (Applicative m, Foldable f, Monoid b) => (a -> m b) -> f a -> m b is:exact
Generalized version of
traverse_ :: Applicative m => (a -> m
()) -> [a] -> m () Executes effects and collects results in
left-to-right order. Works best with left-associative monoids.
Note that there is an alternative
mapM' f t = foldr mappend mempty $ mapM f t
that collects results in right-to-left order (effects still
left-to-right). It might be preferable for right associative monoids.
Map each element of a structure to an action, evaluate these actions
from left to right, and concat the monoid results.
Polymorphic version of the
concatMapM function.
>>> foldMapM @[Int] (Just . replicate 3) [1..3]
Just [1,1,1,2,2,2,3,3,3]
Polymorphic version of the
concatMapA function.
>>> foldMapA @[Int] (Just . replicate 3) [1..3]
Just [1,1,1,2,2,2,3,3,3]
Generalized version of for_ :: Applicative m => [a] -> (a
-> m ()) -> m ()