# Difference between revisions of "Monoid"

From HaskellWiki

RossPaterson (talk | contribs) (refer to uses) |
m (Remark that some common monoids are commutative) |
||

Line 5: | Line 5: | ||

* numbers under addition or multiplication |
* numbers under addition or multiplication |
||

* Booleans under conjunction or disjunction |
* Booleans under conjunction or disjunction |
||

− | * sets under union |
+ | * sets under union or intersection |

* functions from a type to itself, under composition |
* functions from a type to itself, under composition |
||

+ | Note that in most of these cases the operation is also commutative, but it need not be; concatenation and function composition are not commutative. |
||

+ | |||

A Monoid class is defined in [http://www.haskell.org/ghc/dist/current/docs/libraries/base/Data-Monoid.html Data.Monoid], and used in [http://www.haskell.org/ghc/dist/current/docs/libraries/base/Data-Foldable.html Data.Foldable] and in the Writer monad. |
A Monoid class is defined in [http://www.haskell.org/ghc/dist/current/docs/libraries/base/Data-Monoid.html Data.Monoid], and used in [http://www.haskell.org/ghc/dist/current/docs/libraries/base/Data-Foldable.html Data.Foldable] and in the Writer monad. |
||

## Revision as of 10:25, 13 October 2009

*This article is a stub. You can help by expanding it.*

A monoid is an algebraic structure with an associative binary operation that has an identity element. Examples include:

- lists under concatenation
- numbers under addition or multiplication
- Booleans under conjunction or disjunction
- sets under union or intersection
- functions from a type to itself, under composition

Note that in most of these cases the operation is also commutative, but it need not be; concatenation and function composition are not commutative.

A Monoid class is defined in Data.Monoid, and used in Data.Foldable and in the Writer monad.

The monoid interface enables a number of algorithms, including parallel algorithms and tree searches, e.g.:

- An introduction: Haskell Monoids and their Uses
- The blog article Monoids and Finger Trees
- Monad.Reader issue 11, "How to Refold a Map." (PDF), and a follow up

Generalizations of monoids feature in Category theory, for example: