Module
Data.Semiring
#Semiring
class Semiring a where
The Semiring
class is for types that support an addition and
multiplication operation.
Instances must satisfy the following laws:
- Commutative monoid under addition:
- Associativity:
(a + b) + c = a + (b + c)
- Identity:
zero + a = a + zero = a
- Commutative:
a + b = b + a
- Associativity:
- Monoid under multiplication:
- Associativity:
(a * b) * c = a * (b * c)
- Identity:
one * a = a * one = a
- Associativity:
- Multiplication distributes over addition:
- Left distributivity:
a * (b + c) = (a * b) + (a * c)
- Right distributivity:
(a + b) * c = (a * c) + (b * c)
- Left distributivity:
- Annihilation:
zero * a = a * zero = zero
Note: The Number
and Int
types are not fully law abiding
members of this class hierarchy due to the potential for arithmetic
overflows, and in the case of Number
, the presence of NaN
and
Infinity
values. The behaviour is unspecified in these cases.
Members
Instances
#(+)
Operator alias for Data.Semiring.add (left-associative / precedence 6)
#(*)
Operator alias for Data.Semiring.mul (left-associative / precedence 7)
#SemiringRecord
class SemiringRecord rowlist row subrow | rowlist -> subrow where
A class for records where all fields have Semiring
instances, used to
implement the Semiring
instance for records.
Members
addRecord :: RLProxy rowlist -> { | row } -> { | row } -> { | subrow }
mulRecord :: RLProxy rowlist -> { | row } -> { | row } -> { | subrow }
oneRecord :: RLProxy rowlist -> RProxy row -> { | subrow }
zeroRecord :: RLProxy rowlist -> RProxy row -> { | subrow }
Instances
SemiringRecord Nil row ()
(IsSymbol key, Cons key focus subrowTail subrow, SemiringRecord rowlistTail row subrowTail, Semiring focus) => SemiringRecord (Cons key focus rowlistTail) row subrow
Modules
- Control.Applicative
- Control.Apply
- Control.Bind
- Control.Category
- Control.Monad
- Control.Semigroupoid
- Data.Boolean
- Data.BooleanAlgebra
- Data.Bounded
- Data.CommutativeRing
- Data.DivisionRing
- Data.Eq
- Data.EuclideanRing
- Data.Field
- Data.Function
- Data.Functor
- Data.HeytingAlgebra
- Data.Monoid
- Data.Monoid.Additive
- Data.Monoid.Conj
- Data.Monoid.Disj
- Data.Monoid.Dual
- Data.Monoid.Endo
- Data.Monoid.Multiplicative
- Data.NaturalTransformation
- Data.Ord
- Data.Ord.Unsafe
- Data.Ordering
- Data.Ring
- Data.Semigroup
- Data.Semigroup.First
- Data.Semigroup.Last
- Data.Semiring
- Data.Show
- Data.Symbol
- Data.Unit
- Data.Void
- Effect
- Effect.Class
- Effect.Class.Console
- Effect.Console
- Effect.Uncurried
- Effect.Unsafe
- Main
- PSCI.Support
- Prelude
- Prim
- Prim.Ordering
- Prim.Row
- Prim.RowList
- Prim.Symbol
- Prim.TypeError
- Record.Unsafe
- Type.Data.Boolean
- Type.Data.Ordering
- Type.Data.Row
- Type.Data.RowList
- Type.Data.Symbol
- Type.Equality
- Type.Prelude
- Type.Proxy
- Type.Row
- Type.Row.Homogeneous