BNFC-2.8.1: A compiler front-end generator.

Safe HaskellNone
LanguageHaskell98

Algebra.RingUtils

Documentation

module Prelude

class AbelianGroup a where #

Minimal complete definition

zero, (+)

Methods

zero :: a #

(+) :: a -> a -> a infixl 6 #

Instances

AbelianGroup Bool # 

Methods

zero :: Bool #

(+) :: Bool -> Bool -> Bool #

AbelianGroup Int # 

Methods

zero :: Int #

(+) :: Int -> Int -> Int #

AbelianGroup a => AbelianGroup (Pair a) # 

Methods

zero :: Pair a #

(+) :: Pair a -> Pair a -> Pair a #

AbelianGroup a => AbelianGroup (Vec x a) # 

Methods

zero :: Vec x a #

(+) :: Vec x a -> Vec x a -> Vec x a #

AbelianGroup (f (g a)) => AbelianGroup (O f g a) # 

Methods

zero :: O f g a #

(+) :: O f g a -> O f g a -> O f g a #

AbelianGroupZ a => AbelianGroup (Mat x y a) # 

Methods

zero :: Mat x y a #

(+) :: Mat x y a -> Mat x y a -> Mat x y a #

class AbelianGroup a => AbelianGroupZ a where #

Minimal complete definition

isZero

Methods

isZero :: a -> Bool #

Instances

AbelianGroupZ Int # 

Methods

isZero :: Int -> Bool #

AbelianGroupZ a => AbelianGroupZ (Pair a) # 

Methods

isZero :: Pair a -> Bool #

AbelianGroupZ (f (g a)) => AbelianGroupZ (O f g a) # 

Methods

isZero :: O f g a -> Bool #

class AbelianGroupZ a => Ring a where #

Minimal complete definition

(*)

Methods

(*) :: a -> a -> a infixl 7 #

Instances

Ring Int # 

Methods

(*) :: Int -> Int -> Int #

class AbelianGroupZ a => RingP a where #

Minimal complete definition

mul

Methods

mul :: Bool -> a -> a -> Pair a #

data Pair a #

Constructors

(:/:) infixl 2 

Fields

Instances

Functor Pair # 

Methods

fmap :: (a -> b) -> Pair a -> Pair b #

(<$) :: a -> Pair b -> Pair a #

Applicative Pair # 

Methods

pure :: a -> Pair a #

(<*>) :: Pair (a -> b) -> Pair a -> Pair b #

liftA2 :: (a -> b -> c) -> Pair a -> Pair b -> Pair c #

(*>) :: Pair a -> Pair b -> Pair b #

(<*) :: Pair a -> Pair b -> Pair a #

Show a => Show (Pair a) # 

Methods

showsPrec :: Int -> Pair a -> ShowS #

show :: Pair a -> String #

showList :: [Pair a] -> ShowS #

AbelianGroupZ a => AbelianGroupZ (Pair a) # 

Methods

isZero :: Pair a -> Bool #

AbelianGroup a => AbelianGroup (Pair a) # 

Methods

zero :: Pair a #

(+) :: Pair a -> Pair a -> Pair a #

Matrix m => Matrix (O Pair m) # 

Methods

at :: AbelianGroupZ a => Int -> Int -> O Pair m a -> a #

extent :: O Pair m a -> Extent #

singleton :: AbelianGroupZ a => a -> O Pair m a #

glue :: AbelianGroup a => Dimension -> O Pair m a -> O Pair m a -> O Pair m a #

split :: AbelianGroupZ a => Dimension -> Int -> O Pair m a -> (O Pair m a, O Pair m a) #

zeroMatrix :: AbelianGroup a => Int -> Int -> O Pair m a #

select :: Bool -> [a] -> Pair [a] #

onlyLeft :: [a] -> Pair [a] #

onlyRight :: [a] -> Pair [a] #

newtype O f g a #

Constructors

O 

Fields

Instances

(Functor f, Functor g) => Functor (O f g) # 

Methods

fmap :: (a -> b) -> O f g a -> O f g b #

(<$) :: a -> O f g b -> O f g a #

Matrix m => Matrix (O Pair m) # 

Methods

at :: AbelianGroupZ a => Int -> Int -> O Pair m a -> a #

extent :: O Pair m a -> Extent #

singleton :: AbelianGroupZ a => a -> O Pair m a #

glue :: AbelianGroup a => Dimension -> O Pair m a -> O Pair m a -> O Pair m a #

split :: AbelianGroupZ a => Dimension -> Int -> O Pair m a -> (O Pair m a, O Pair m a) #

zeroMatrix :: AbelianGroup a => Int -> Int -> O Pair m a #

Show (f (g a)) => Show (O f g a) # 

Methods

showsPrec :: Int -> O f g a -> ShowS #

show :: O f g a -> String #

showList :: [O f g a] -> ShowS #

AbelianGroupZ (f (g a)) => AbelianGroupZ (O f g a) # 

Methods

isZero :: O f g a -> Bool #

AbelianGroup (f (g a)) => AbelianGroup (O f g a) # 

Methods

zero :: O f g a #

(+) :: O f g a -> O f g a -> O f g a #

sum :: AbelianGroup a => [a] -> a #

mulDefault :: RingP a => a -> a -> a #

module Data.Pair