numhask-0.0.9: A numeric prelude

Safe HaskellSafe
LanguageHaskell2010

NumHask.Algebra.Additive

Contents

Description

Additive Structure

Synopsis

Additive Structure

class AdditiveMagma a where Source #

plus is used for the additive magma to distinguish from + which, by convention, implies commutativity

Minimal complete definition

plus

Methods

plus :: a -> a -> a Source #

class AdditiveMagma a => AdditiveUnital a where Source #

AdditiveUnital

zero `plus` a == a
a `plus` zero == a

Minimal complete definition

zero

Methods

zero :: a Source #

class AdditiveMagma a => AdditiveInvertible a where Source #

AdditiveInvertible

∀ a ∈ A: negate a ∈ A

law is true by construction in Haskell

Minimal complete definition

negate

Methods

negate :: a -> a Source #

class AdditiveMagma b => AdditiveHomomorphic a b where Source #

AdditiveHomomorphic

∀ a ∈ A: plushom a ∈ B

law is true by construction in Haskell

Minimal complete definition

plushom

Methods

plushom :: a -> b Source #

Instances

class AdditiveMagma a => AdditiveIdempotent a Source #

AdditiveIdempotent

a `plus` a == a

class (AdditiveCommutative a, AdditiveUnital a, AdditiveAssociative a) => Additive a where Source #

Additive is commutative, unital and associative under addition

a + b = b + a
(a + b) + c = a + (b + c)
zero + a = a
a + zero = a

Methods

(+) :: a -> a -> a infixl 6 Source #

class (AdditiveUnital a, AdditiveAssociative a, AdditiveInvertible a) => AdditiveRightCancellative a where Source #

Non-commutative right minus

Methods

(-~) :: a -> a -> a infixl 6 Source #

class (AdditiveUnital a, AdditiveAssociative a, AdditiveInvertible a) => AdditiveLeftCancellative a where Source #

Non-commutative left minus

Methods

(~-) :: a -> a -> a infixl 6 Source #

class (Additive a, AdditiveInvertible a) => AdditiveGroup a where Source #

AdditiveGroup

a - a = zero
negate a = zero - a
negate a + a = zero

Methods

(-) :: a -> a -> a infixl 6 Source #