# monoid (haskell)

## 1. definition

First look at the semigroup type class (see Typeclasses in Haskell for more information)

class Semigroup a where (<>) :: a -> a -> a

The prefix version of `(<>)`

is called `mappend`

.

Then, the monoid type class is:

class Semigroup a => Monoid a where mempty :: a

A monoid is a semigroup with an identity element.

## 2. example

import Data.Monoid getSum $ Sum 1 <> Sum 2

## 3. see also

- In algebra, a monoid is a set with an identity element and an associative operation that is closed. (see group (algebra))