monoids-0.1.2: Data/Monoid/Multiplicative/Transformer.hs
module Data.Monoid.Multiplicative.Transformer
( module Data.Monoid.Multiplicative
, Log(Log, getLog)
, Exp(Exp, getExp)
) where
import Data.Monoid.Multiplicative
data Log m = Log { getLog :: m }
instance MultiplicativeMonoid m => Monoid (Log m) where
mempty = Log one
Log a `mappend` Log b = Log (a `times` b)
data Exp m = Exp { getExp :: m }
instance Monoid m => MultiplicativeMonoid (Exp m) where
one = Exp mempty
Exp a `times` Exp b = Exp (a `mappend` b)