Contents Class Complex functions Instances for atomic types
Synopsis
class C a where
 zero :: a (+) :: a -> a -> a (-) :: a -> a -> a negate :: a -> a
subtract :: C a => a -> a -> a
sum :: C a => [a] -> a
sum1 :: C a => [a] -> a
propAssociative :: (Eq a, C a) => a -> a -> a -> Bool
propCommutative :: (Eq a, C a) => a -> a -> Bool
propIdentity :: (Eq a, C a) => a -> Bool
propInverse :: (Eq a, C a) => a -> Bool
Class
 class C a where Source

Additive a encapsulates the notion of a commutative group, specified by the following laws:

```          a + b === b + a
(a + b) + c === a + (b + c)
zero + a === a
a + negate a === 0
```

Typical examples include integers, dollars, and vectors.

Minimal definition: +, zero, and (negate or '(-)')

Methods
 zero :: a Source
zero element of the vector space
 (+) :: a -> a -> a Source
 (-) :: a -> a -> a Source
 negate :: a -> a Source
inverse with respect to +
Instances
 C Double C Float C Int C Int8 C Int16 C Int32 C Int64 C Integer C Word C Word8 C Word16 C Word32 C Word64 C T C T C T C v => C [v] Integral a => C (Ratio a) (Ord a, C a) => C (T a) C a => C (T a) C a => C (T a) C a => C (T a) C a => C (T a) C a => C (T a) C a => C (T a) (C a, C a, C a) => C (T a) C a => C (T a) C a => C (T a) (C a, C a) => C (T a) C a => C (T a) C a => C (T a) C a => C (T a) (Eq a, C a) => C (T a) (Eq a, C a) => C (T a) C a => C (T a) C v => C (b -> v) (C v0, C v1) => C (v0, v1) (Ord i, Eq v, C v) => C (Map i v) (Ord a, C b) => C (T a b) (C u, C a) => C (T u a) C v => C (T a v) (Ord i, C a) => C (T i a) C v => C (T a v) (C v0, C v1, C v2) => C (v0, v1, v2)
 subtract :: C a => a -> a -> a Source
subtract is (-) with swapped operand order. This is the operand order which will be needed in most cases of partial application.
Complex functions
 sum :: C a => [a] -> a Source
Sum up all elements of a list. An empty list yields zero.
 sum1 :: C a => [a] -> a Source
Sum up all elements of a non-empty list. This avoids including a zero which is useful for types where no universal zero is available.
Instances for atomic types
 propAssociative :: (Eq a, C a) => a -> a -> a -> Bool Source
 propCommutative :: (Eq a, C a) => a -> a -> Bool Source
 propIdentity :: (Eq a, C a) => a -> Bool Source
 propInverse :: (Eq a, C a) => a -> Bool Source