monoids-0.2.0.2: Monoids, specialized containers and a general map/reduce frameworkSource codeContentsIndex
Data.Monoid.Multiplicative
Portabilityportable (but instances use MPTCs)
Stabilityexperimental
Maintainerekmett@gmail.com
Contents
Multiplicative to Monoid
Monoid to Multiplicative
Description

When dealing with a Ring or other structure, you often need a pair of Monoid instances that are closely related. Making a newtype for one is unsatisfying and yields an unnatural programming style.

A Multiplicative is a Monoid that is intended for use in a scenario that can be extended to have another Monoid slot in for addition. This enables one to use common notation.

Any Multiplicative can be turned into a Monoid using the Log wrapper.

Any Monoid can be turned into a Multiplicative using the Exp wrapper.

Instances are supplied for common Monads of Monoids, in a fashion which can be extended if the Monad is a MonadPlus to yield a RightSemiNearRing

Instances are also supplied for common Applicatives of Monoids, in a fashion which can be extended if the Applicative is Alternative to yield a RightSemiNearRing

Synopsis
class Multiplicative m where
one :: m
times :: m -> m -> m
data Log m = Log {
getLog :: m
}
data Exp m = Exp {
getExp :: m
}
Documentation
class Multiplicative m whereSource
Methods
one :: mSource
times :: m -> m -> mSource
show/hide Instances
Multiplicative to Monoid
data Log m Source
Convert a Multiplicative into a Monoid. Mnemonic: Log a + Log b = Log (a * b)
Constructors
Log
getLog :: m
show/hide Instances
Monoid to Multiplicative
data Exp m Source
Convert a Monoid into a Multiplicative. Mnemonic: Exp a * Exp b = Exp (a + b)
Constructors
Exp
getExp :: m
show/hide Instances
Produced by Haddock version 2.4.2