- class (Additive r, Abelian r, Multiplicative r) => Semiring r
Documentation
class (Additive r, Abelian r, Multiplicative r) => Semiring r Source
A pair of an additive abelian semigroup, and a multiplicative semigroup, with the distributive laws:
a(b + c) = ab + ac (a + b)c = ac + bc
Common notation includes the laws for additive and multiplicative identity in semiring.
If you want that, look at Rig
instead.
Ideally we'd use the cyclic definition:
class (LeftModule r r, RightModule r r, Additive r, Abelian r, Multiplicative r) => Semiring r
to enforce that every semiring r is an r-module over itself, but Haskell doesn't like that.
Semiring Bool | |
Semiring Int | |
Semiring Int8 | |
Semiring Int16 | |
Semiring Int32 | |
Semiring Int64 | |
Semiring Integer | |
Semiring Word | |
Semiring Word8 | |
Semiring Word16 | |
Semiring Word32 | |
Semiring Word64 | |
Semiring () | |
Semiring Natural | |
(Abelian r, AdditiveMonoid r) => Semiring (End r) | |
(AdditiveMonoid r, Abelian r) => Semiring (ZeroRng r) | |
Semiring r => Semiring (Opposite r) | |
Rng r => Semiring (RngRing r) | |
FreeAlgebra r a => Semiring (a -> r) | |
(Semiring a, Semiring b) => Semiring (a, b) | |
FreeCoalgebra r m => Semiring (Linear r m) | |
(Semiring a, Semiring b, Semiring c) => Semiring (a, b, c) | |
FreeCoalgebra r m => Semiring (Map r b m) | |
(Semiring a, Semiring b, Semiring c, Semiring d) => Semiring (a, b, c, d) | |
(Semiring a, Semiring b, Semiring c, Semiring d, Semiring e) => Semiring (a, b, c, d, e) |