semiring-simple-0.2.0.0: A module for dealing with semirings.

CopyrightThomas Wilke, Frank Huch, Sebastian Fischer, Peter Harpending
LicenseBSD3
MaintainerPeter Harpending <pharpend2@gmail.com>
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Semiring

Description

This library provides a type class for semirings.

Synopsis

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

Methods

zero, one :: s Source

(.+.), (.*.) :: s -> s -> s Source