semirings-0.7: two monoids as one, in holy haskimony

# semirings-0.7: two monoids as one, in holy haskimony

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.

Modules

semirings-0.7

- Data
  Submodules
  - Data.Euclidean
  - Data.Field
  - Ring
    Submodules
    - Data.Ring.Ordered
  - Data.Semiring
    Submodules
    - Data.Semiring.Directed
    - Data.Semiring.Generic
    - Data.Semiring.Tropical
  - Data.Star