numeric-prelude-0.2.2: An experimental alternative hierarchy of numeric type classes

Portability requires multi-parameter type classes provisional numericprelude@henning-thielemann.de

Algebra.Module

Description

Abstraction of modules

Synopsis

# Documentation

class (C a, C v) => C a v whereSource

A Module over a ring satisfies:

a *> (b + c) === a *> b + a *> c
(a * b) *> c === a *> (b *> c)
(a + b) *> c === a *> c + b *> c

Methods

(*>) :: a -> v -> vSource

scale a vector by a scalar

Instances

 C Double Double C Float Float C Int Int C Integer Integer C T T C a => C Integer (T a) C a v => C a [v] C a b => C a (T b) C a b => C a (T b) C a b => C a (T b) (C a v, C v) => C a (T v) C a b => C a (T b) The '(*>)' method can't replace scale because it requires the Algebra.Module constraint C a b => C a (T b) C a b => C a (T b) The '(*>)' method can't replace scale because it requires the Algebra.Module constraint C a v => C a (c -> v) (C a b0, C a b1) => C a (b0, b1) (Ord i, Eq a, Eq v, C a v) => C a (Map i v) (C u, C a b) => C a (T u b) (Ord i, C a v) => C a (T i v) C a v => C a (T b v) (C a b0, C a b1, C a b2) => C a (b0, b1, b2) C a => C (T a) (T a)

(<*>.*>) :: C a x => T (a, v) (x -> c) -> (v -> x) -> T (a, v) cSource

# Related functions

linearComb :: C a v => [a] -> [v] -> vSource

Compute the linear combination of a list of vectors.

ToDo: Should it use NumericPrelude.List.Checked.zipWith ?

integerMultiply :: (C a, C v) => a -> v -> vSource

This function can be used to define any C as a module over Integer.

# Properties

propCascade :: (Eq v, C a v) => v -> a -> a -> BoolSource

propRightDistributive :: (Eq v, C a v) => a -> v -> v -> BoolSource

propLeftDistributive :: (Eq v, C a v) => v -> a -> a -> BoolSource