Copyright | Thomas Wilke, Frank Huch, Sebastian Fischer, Peter Harpending |
---|---|
License | BSD3 |
Maintainer | Peter Harpending <pharpend2@gmail.com> |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Data.Semiring
Description
This library provides a type class for semirings.
Documentation
class Eq s => Semiring s where Source
A semiring is an additive commutative monoid with identity zero
:
a .+. b == b .+. a zero .+. a == a (a .+. b) .+. c == a .+. (b .+. c)
A semiring is a multiplicative monoid with identity one
:
one .*. a == a a .*. one == a (a .*. b) .*. c == a .*. (b .*. c)
Multiplication distributes over addition:
a .*. (b .+. c) == (a .*. b) .+. (a .*. c) (a .+. b) .*. c == (a .*. c) .+. (b .*. c)
zero
annihilates a semiring with respect to multiplication:
zero .*. a == zero a .*. zero == zero