freemodule-0.0: Free modulesContentsIndex
Data.FreeModule.Class
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
baseMap :: (FreeModule x, FreeModule y, Coeff x ~ Coeff y) => (Base x -> Base y) -> x -> y
coeffMap :: (FreeModule x, FreeModule y, Base x ~ Base y) => (Coeff x -> Coeff y) -> x -> y
class (Ord (Base a), Num (Coeff a)) => FreeModule a where
type Base a :: *
type Coeff a :: *
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
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)
unsafeJoin :: a -> a -> a
toList :: a -> [(Base a, Coeff a)]
fromList :: [(Base a, Coeff a)] -> a
fromAscendingList :: [(Base a, Coeff a)] -> a
(*^) :: 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)
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
show/hide Instances
(Ord b, Num c) => FreeModule (FreeMod b c)
(*^) :: 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