Monoid

From HaskellWiki
Revision as of 13:58, 28 January 2009 by RossPaterson (talk | contribs) (refer to uses)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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
  • functions from a type to itself, under composition

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.:

Generalizations of monoids feature in Category theory, for example: