1 In mathematics, a semigroup is an algebraic structure consisting of a
2 set together with an associative binary operation. A semigroup
3 generalizes a monoid in that there might not exist an identity element.
4 It also (originally) generalized a group (a monoid with all inverses) to
5 a type where every element did not have to have an inverse, thus the
8 WWW: http://github.com/ekmett/semigroups/