


Description 
Class interface to different free module implementations.
Free modules are like maps from a base type to a numeric type,
with the additional invariant that the values are never zero.


Synopsis 



Documentation 

baseMap :: (FreeModule x, FreeModule y, Coeff x ~ Coeff y) => (Base x > Base y) > x > y 
generic baseMap implementation, converts to list and back.


coeffMap :: (FreeModule x, FreeModule y, Base x ~ Base y) => (Coeff x > Coeff y) > x > y 
generic coeffMap implementation, converts to list and back.


class (Ord (Base a), Num (Coeff a)) => FreeModule a where 
 Associated Types  type Base a :: *   type Coeff a :: * 
  Methods  isZero :: a > Bool   zero :: a   fromBase :: Base a > a   fromTerm :: Base a > Coeff a > a   (^+^) :: a > a > a   (^^) :: a > a > a   neg :: a > a   scalarMul :: Coeff a > a > a   unionWith :: (Coeff a > Coeff a > Coeff a) > a > a > a  We should call the function even when the given base is present
only in one of the arguments! So that unionWith () works correctly.
  coeff :: a > Base a > Coeff a   size :: a > Int   minTerm :: a > (Base a, Coeff a)   maxTerm :: a > (Base a, Coeff a)   split :: a > (a, a)  split into two approximately equal parts x and y, such that
maxTerm x < minTerm y
  unsafeJoin :: a > a > a  we assume that maxTerm x < minTerm y
  toList :: a > [(Base a, Coeff a)]   fromList :: [(Base a, Coeff a)] > a   fromAscendingList :: [(Base a, Coeff a)] > a 
  Instances  


(*^) :: FreeModule a => Coeff a > a > a 

(^*) :: FreeModule a => a > Coeff a > a 

minTermMaybe :: FreeModule a => a > Maybe (Base a, Coeff a) 

maxTermMaybe :: FreeModule a => a > Maybe (Base a, Coeff a) 

Produced by Haddock version 2.4.1 