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

Copyright(c) Dylan Thurston, Henning Thielemann 2004-2005
Maintainernumericprelude@henning-thielemann.de
Stabilityprovisional
Portabilityrequires multi-parameter type classes
Safe HaskellNone
LanguageHaskell98

Algebra.Module

Contents

Description

Abstraction of modules

Synopsis

Documentation

class (C a, C v) => C a v where Source

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 -> v infixr 7 Source

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 b, RealFloat b) => C a (Complex b) 
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 v => C (T a) (T v) 

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

Instances for atomic types

Instances for composed types

Related functions

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

Compute the linear combination of a list of vectors.

ToDo: Should it use zipWith ?

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

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

Better move to Algebra.Additive?

Properties

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

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

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