The class of semirings (types with two binary
operations and two respective identities). One
can think of a semiring as two monoids of the same
underlying type, with the first being commutative.
In the documentation, you will often see the first
monoid being referred to as additive, and the second
monoid being referred to as multiplicative, a typical
convention when talking about semirings.
For any type R with a Num instance, the additive monoid is (R, +, 0) and the multiplicative monoid is (R, *, 1).
For Prelude.Bool, the additive monoid is (Prelude.Bool, Prelude.||, Prelude.False)
and the multiplicative monoid is (Prelude.Bool, Prelude.&&, Prelude.True).
Instances should satisfy the following laws:
Instances96Semiring, …
Semiring IntegerDefined in semirings-0.7 · Data.SemiringSemiring NaturalDefined in semirings-0.7 · Data.SemiringSemiring CCharDefined in semirings-0.7 · Data.SemiringSemiring CClockDefined in semirings-0.7 · Data.SemiringSemiring CDoubleDefined in semirings-0.7 · Data.SemiringSemiring CFloatDefined in semirings-0.7 · Data.SemiringSemiring CIntDefined in semirings-0.7 · Data.SemiringSemiring CIntMaxDefined in semirings-0.7 · Data.SemiringSemiring CIntPtrDefined in semirings-0.7 · Data.SemiringSemiring CLLongDefined in semirings-0.7 · Data.SemiringSemiring CLongDefined in semirings-0.7 · Data.SemiringSemiring CPtrdiffDefined in semirings-0.7 · Data.SemiringSemiring CSCharDefined in semirings-0.7 · Data.SemiringSemiring CSUSecondsDefined in semirings-0.7 · Data.SemiringSemiring CShortDefined in semirings-0.7 · Data.SemiringSemiring CSigAtomicDefined in semirings-0.7 · Data.SemiringSemiring CSizeDefined in semirings-0.7 · Data.SemiringSemiring CTimeDefined in semirings-0.7 · Data.SemiringSemiring CUCharDefined in semirings-0.7 · Data.SemiringSemiring CUIntDefined in semirings-0.7 · Data.SemiringSemiring CUIntMaxDefined in semirings-0.7 · Data.SemiringSemiring CUIntPtrDefined in semirings-0.7 · Data.SemiringSemiring CULLongDefined in semirings-0.7 · Data.SemiringSemiring CULongDefined in semirings-0.7 · Data.SemiringSemiring CUSecondsDefined in semirings-0.7 · Data.SemiringSemiring CUShortDefined in semirings-0.7 · Data.SemiringSemiring CWcharDefined in semirings-0.7 · Data.SemiringSemiring IntPtrDefined in semirings-0.7 · Data.SemiringSemiring WordPtrDefined in semirings-0.7 · Data.SemiringSemiring Int16Defined in semirings-0.7 · Data.SemiringSemiring Int32Defined in semirings-0.7 · Data.SemiringSemiring Int64Defined in semirings-0.7 · Data.SemiringSemiring Int8Defined in semirings-0.7 · Data.SemiringSemiring CCcDefined in semirings-0.7 · Data.SemiringSemiring CDevDefined in semirings-0.7 · Data.SemiringSemiring CGidDefined in semirings-0.7 · Data.SemiringSemiring CInoDefined in semirings-0.7 · Data.SemiringSemiring CModeDefined in semirings-0.7 · Data.SemiringSemiring CNlinkDefined in semirings-0.7 · Data.SemiringSemiring COffDefined in semirings-0.7 · Data.SemiringSemiring CPidDefined in semirings-0.7 · Data.SemiringSemiring CRLimDefined in semirings-0.7 · Data.SemiringSemiring CSpeedDefined in semirings-0.7 · Data.SemiringSemiring CSsizeDefined in semirings-0.7 · Data.SemiringSemiring CTcflagDefined in semirings-0.7 · Data.SemiringSemiring CUidDefined in semirings-0.7 · Data.SemiringSemiring FdDefined in semirings-0.7 · Data.SemiringSemiring Word16Defined in semirings-0.7 · Data.SemiringSemiring Word32Defined in semirings-0.7 · Data.SemiringSemiring Word64Defined in semirings-0.7 · Data.SemiringSemiring Word8Defined in semirings-0.7 · Data.SemiringSemiring BoolDefined in semirings-0.7 · Data.SemiringSemiring DoubleDefined in semirings-0.7 · Data.SemiringSemiring FloatDefined in semirings-0.7 · Data.SemiringSemiring IntDefined in semirings-0.7 · Data.SemiringSemiring WordDefined in semirings-0.7 · Data.SemiringSemiring Mod2Defined in semirings-0.7 · Data.SemiringSemiring DirectedDefined in semirings-0.7 · Data.Semiring.DirectedSemiring ()Defined in semirings-0.7 · Data.SemiringNum a => Semiring (WrappedFractional a)Defined in semirings-0.7 · Data.EuclideanNum a => Semiring (WrappedIntegral a)Defined in semirings-0.7 · Data.EuclideanNum a => Semiring (WrappedNum a)Defined in semirings-0.7 · Data.SemiringIntegral a => Semiring (Ratio a)Defined in semirings-0.7 · Data.SemiringRing a => Semiring (Complex a)Defined in semirings-0.7 · Data.SemiringThis instance can suffer due to floating point arithmetic.
Semiring (Predicate a)Defined in semirings-0.7 · Data.SemiringSemiring (Modular Word16)Defined in semirings-0.7 · Data.Ring.OrderedSemiring (Modular Word32)Defined in semirings-0.7 · Data.Ring.OrderedSemiring (Modular Word64)Defined in semirings-0.7 · Data.Ring.OrderedSemiring (Modular Word8)Defined in semirings-0.7 · Data.Ring.OrderedSemiring (Modular Word)Defined in semirings-0.7 · Data.Ring.OrderedSemiring a => Semiring (Equivalence a)Defined in semirings-0.7 · Data.SemiringSemiring a => Semiring (Identity a)Defined in semirings-0.7 · Data.SemiringSemiring a => Semiring (Down a)Defined in semirings-0.7 · Data.SemiringSemiring a => Semiring (Dual a)Defined in semirings-0.7 · Data.SemiringSemiring a => Semiring (Maybe a)Defined in semirings-0.7 · Data.SemiringSemiring a => Semiring (IO a)Defined in semirings-0.7 · Data.Semiring(Generic a, GSemiring (Rep a)) => Semiring (GenericSemiring a)Defined in semirings-0.7 · Data.Semiring.Generic(Eq a, Hashable a, Monoid a) => Semiring (HashSet a)Defined in semirings-0.7 · Data.Semiring(Ord a, Monoid a) => Semiring (Set a)Defined in semirings-0.7 · Data.Semiring(Coercible Int a, Monoid a) => Semiring (IntSetOf a)Defined in semirings-0.7 · Data.SemiringHasResolution a => Semiring (Fixed a)Defined in semirings-0.7 · Data.SemiringSemiring (Proxy a)Defined in semirings-0.7 · Data.SemiringSemiring a => Semiring (Op a b)Defined in semirings-0.7 · Data.SemiringSemiring b => Semiring (a -> b)Defined in semirings-0.7 · Data.Semiring(Eq k, Hashable k, Monoid k, Semiring v) => Semiring (HashMap k v)Defined in semirings-0.7 · Data.Semiring(Ord a, Monoid a, Extremum e) => Semiring (Tropical e a)Defined in semirings-0.7 · Data.Semiring.Tropical(Ord k, Monoid k, Semiring v) => Semiring (Map k v)Defined in semirings-0.7 · Data.Semiring(Coercible Int k, Monoid k, Semiring v) => Semiring (IntMapOf k v)Defined in semirings-0.7 · Data.Semiring(Semiring a, Semiring b) => Semiring (a, b)Defined in semirings-0.7 · Data.SemiringSemiring a => Semiring (Const a b)Defined in semirings-0.7 · Data.Semiring(Semiring a, Applicative f) => Semiring (Ap f a)Defined in semirings-0.7 · Data.Semiring(Semiring a, Semiring b, Semiring c) => Semiring (a, b, c)Defined in semirings-0.7 · Data.Semiring(Semiring a, Semiring b, Semiring c, Semiring d) => Semiring (a, b, c, d)Defined in semirings-0.7 · Data.Semiring(Semiring a, Semiring b, Semiring c, Semiring d, Semiring e) => Semiring (a, b, c, d, e)Defined in semirings-0.7 · Data.Semiring(Semiring a, Semiring b, Semiring c, Semiring d, Semiring e, Semiring f) => Semiring (a, b, c, d, e, f)Defined in semirings-0.7 · Data.Semiring(Semiring a, Semiring b, Semiring c, Semiring d, Semiring e, Semiring f, Semiring g) => Semiring (a, b, c, d, e, f, g)Defined in semirings-0.7 · Data.Semiring