semirings (hackage): Haskellers are usually familiar with monoids and semigroups. A monoid has an appending operation <> (or mappend), and an identity element, mempty. A semigroup has an appending <> operation, but does not require a mempty element.  A Semiring has two appending operations, plus and times, and two respective identity elements, zero and one.  More formally, a Semiring R is a set equipped with two binary relations + and *, such that:  (R,+) is a commutative monoid with identity element 0,  (R,*) is a monoid with identity element 1,  (*) left and right distributes over addition, and  multiplication by '0' annihilates R.
Keywords: algebra|bsd3|data|data-structures|library|math|mathematics|maths