foldMap package:rio

Map each element of the structure to a monoid, and combine the results.
O(n). Fold the keys and values in the map using the given monoid, such that
foldMapWithKey f = fold . mapWithKey f
This can be an asymptotically faster than foldrWithKey or foldlWithKey for some monoids.
Extend foldMap to allow side effects. Internally, this is implemented using a strict left fold. This is used for performance reasons. It also necessitates that this function has a Monad constraint and not just an Applicative constraint. For more information, see https://github.com/commercialhaskell/rio/pull/99#issuecomment-394179757.
Combines the elements of a structure, given ways of mapping them to a common monoid.
bifoldMap f g
≡ bifoldr (mappend . f) (mappend . g) mempty