Product package:universum

Monoid under multiplication.
Product x <> Product y == Product (x * y)

Examples

>>> Product 3 <> Product 4 <> mempty
Product {getProduct = 12}
>>> mconcat [ Product n | n <- [2 .. 10]]
Product {getProduct = 3628800}
Stricter version of product.
>>> product [1..10]
3628800

>>> product (Right 3)
...
• Do not use 'Foldable' methods on Either
Suggestions:
Instead of
for_ :: (Foldable t, Applicative f) => t a -> (a -> f b) -> f ()
use
whenJust  :: Applicative f => Maybe a    -> (a -> f ()) -> f ()
whenRight :: Applicative f => Either l r -> (r -> f ()) -> f ()
...
Instead of
fold :: (Foldable t, Monoid m) => t m -> m
use
maybeToMonoid :: Monoid m => Maybe m -> m
...