ideas-math-types-1.0: Common types for mathematical domain reasoners

Maintainerbastiaan.heeren@ou.nl
Stabilityprovisional
Portabilityportable (depends on ghc)
Safe HaskellNone
LanguageHaskell2010

Domain.Algebra.Field

Contents

Description

 
Synopsis

Semi-ring

class SemiRing a where Source #

Minimal complete definition

(|+|), zero, (|*|), one

Methods

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

zero :: a Source #

sum :: [a] -> a Source #

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

one :: a Source #

product :: [a] -> a Source #

Ring

class SemiRing a => Ring a where Source #

Methods

plusInverse :: a -> a Source #

(|-|) :: a -> a -> a infixl 6 Source #

Instances
Ring Expr Source # 
Instance details

Defined in Domain.Math.Expr.Data

Num a => Ring (SafeNum a) Source # 
Instance details

Defined in Domain.Algebra.Field

(CoField a, Field a) => Ring (SmartField a) Source # 
Instance details

Defined in Domain.Algebra.SmartGroup

Field

class Ring a => Field a where Source #

Methods

timesInverse :: a -> a Source #

(|/|) :: a -> a -> a infixl 7 Source #

Instances
Field Expr Source # 
Instance details

Defined in Domain.Math.Expr.Data

(Eq a, Fractional a) => Field (SafeNum a) Source # 
Instance details

Defined in Domain.Algebra.Field

(CoField a, Field a) => Field (SmartField a) Source # 
Instance details

Defined in Domain.Algebra.SmartGroup

Additive monoid

newtype Additive a Source #

Constructors

Additive 

Fields

Instances
Functor Additive Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

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

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

Applicative Additive Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

pure :: a -> Additive a #

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

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

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

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

Eq a => Eq (Additive a) Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

(==) :: Additive a -> Additive a -> Bool #

(/=) :: Additive a -> Additive a -> Bool #

Ord a => Ord (Additive a) Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

compare :: Additive a -> Additive a -> Ordering #

(<) :: Additive a -> Additive a -> Bool #

(<=) :: Additive a -> Additive a -> Bool #

(>) :: Additive a -> Additive a -> Bool #

(>=) :: Additive a -> Additive a -> Bool #

max :: Additive a -> Additive a -> Additive a #

min :: Additive a -> Additive a -> Additive a #

Show a => Show (Additive a) Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

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

show :: Additive a -> String #

showList :: [Additive a] -> ShowS #

SemiRing a => Semigroup (Additive a) Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

(<>) :: Additive a -> Additive a -> Additive a #

sconcat :: NonEmpty (Additive a) -> Additive a #

stimes :: Integral b => b -> Additive a -> Additive a #

SemiRing a => Monoid (Additive a) Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

mempty :: Additive a #

mappend :: Additive a -> Additive a -> Additive a #

mconcat :: [Additive a] -> Additive a #

CoRing a => CoGroup (Additive a) Source # 
Instance details

Defined in Domain.Algebra.Field

CoSemiRing a => CoMonoid (Additive a) Source # 
Instance details

Defined in Domain.Algebra.Field

Ring a => Group (Additive a) Source # 
Instance details

Defined in Domain.Algebra.Field

Arbitrary a => Arbitrary (Additive a) Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

arbitrary :: Gen (Additive a)

shrink :: Additive a -> [Additive a]

CoArbitrary a => CoArbitrary (Additive a) Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

coarbitrary :: Additive a -> Gen b -> Gen b

Multiplicative monoid

newtype Multiplicative a Source #

Constructors

Multiplicative 

Fields

Instances
Functor Multiplicative Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

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

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

Applicative Multiplicative Source # 
Instance details

Defined in Domain.Algebra.Field

Eq a => Eq (Multiplicative a) Source # 
Instance details

Defined in Domain.Algebra.Field

Ord a => Ord (Multiplicative a) Source # 
Instance details

Defined in Domain.Algebra.Field

Show a => Show (Multiplicative a) Source # 
Instance details

Defined in Domain.Algebra.Field

SemiRing a => Semigroup (Multiplicative a) Source # 
Instance details

Defined in Domain.Algebra.Field

SemiRing a => Monoid (Multiplicative a) Source # 
Instance details

Defined in Domain.Algebra.Field

CoSemiRing a => CoMonoidZero (Multiplicative a) Source # 
Instance details

Defined in Domain.Algebra.Field

CoField a => CoGroup (Multiplicative a) Source # 
Instance details

Defined in Domain.Algebra.Field

CoSemiRing a => CoMonoid (Multiplicative a) Source # 
Instance details

Defined in Domain.Algebra.Field

SemiRing a => MonoidZero (Multiplicative a) Source # 
Instance details

Defined in Domain.Algebra.Field

Field a => Group (Multiplicative a) Source # 
Instance details

Defined in Domain.Algebra.Field

Arbitrary a => Arbitrary (Multiplicative a) Source # 
Instance details

Defined in Domain.Algebra.Field

CoArbitrary a => CoArbitrary (Multiplicative a) Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

coarbitrary :: Multiplicative a -> Gen b -> Gen b

Datatype for safe numeric operators

data SafeNum a Source #

Instances
Monad SafeNum Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

(>>=) :: SafeNum a -> (a -> SafeNum b) -> SafeNum b #

(>>) :: SafeNum a -> SafeNum b -> SafeNum b #

return :: a -> SafeNum a #

fail :: String -> SafeNum a #

Functor SafeNum Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

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

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

Applicative SafeNum Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

pure :: a -> SafeNum a #

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

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

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

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

Eq a => Eq (SafeNum a) Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

(==) :: SafeNum a -> SafeNum a -> Bool #

(/=) :: SafeNum a -> SafeNum a -> Bool #

(Eq a, Fractional a) => Fractional (SafeNum a) Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

(/) :: SafeNum a -> SafeNum a -> SafeNum a #

recip :: SafeNum a -> SafeNum a #

fromRational :: Rational -> SafeNum a #

Num a => Num (SafeNum a) Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

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

(-) :: SafeNum a -> SafeNum a -> SafeNum a #

(*) :: SafeNum a -> SafeNum a -> SafeNum a #

negate :: SafeNum a -> SafeNum a #

abs :: SafeNum a -> SafeNum a #

signum :: SafeNum a -> SafeNum a #

fromInteger :: Integer -> SafeNum a #

Ord a => Ord (SafeNum a) Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

compare :: SafeNum a -> SafeNum a -> Ordering #

(<) :: SafeNum a -> SafeNum a -> Bool #

(<=) :: SafeNum a -> SafeNum a -> Bool #

(>) :: SafeNum a -> SafeNum a -> Bool #

(>=) :: SafeNum a -> SafeNum a -> Bool #

max :: SafeNum a -> SafeNum a -> SafeNum a #

min :: SafeNum a -> SafeNum a -> SafeNum a #

Show a => Show (SafeNum a) Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

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

show :: SafeNum a -> String #

showList :: [SafeNum a] -> ShowS #

Arbitrary a => Arbitrary (SafeNum a) Source # 
Instance details

Defined in Domain.Algebra.Field

Methods

arbitrary :: Gen (SafeNum a)

shrink :: SafeNum a -> [SafeNum a]

(Eq a, Fractional a) => Field (SafeNum a) Source # 
Instance details

Defined in Domain.Algebra.Field

Num a => Ring (SafeNum a) Source # 
Instance details

Defined in Domain.Algebra.Field

Num a => SemiRing (SafeNum a) Source # 
Instance details

Defined in Domain.Algebra.Field

CoSemiRing, CoRing, and CoField (for matching)

class CoSemiRing a where Source #

Minimal complete definition

isPlus, isZero, isTimes, isOne

Methods

isPlus :: a -> Maybe (a, a) Source #

isZero :: a -> Bool Source #

isTimes :: a -> Maybe (a, a) Source #

isOne :: a -> Bool Source #

class CoSemiRing a => CoRing a where Source #

Minimal complete definition

isNegate

Methods

isNegate :: a -> Maybe a Source #

isMinus :: a -> Maybe (a, a) Source #

Instances
CoRing Expr Source # 
Instance details

Defined in Domain.Math.Expr.Data

CoRing a => CoRing (SmartField a) Source # 
Instance details

Defined in Domain.Algebra.SmartGroup

class CoRing a => CoField a where Source #

Minimal complete definition

isRecip

Methods

isRecip :: a -> Maybe a Source #

isDivision :: a -> Maybe (a, a) Source #

Instances
CoField Expr Source # 
Instance details

Defined in Domain.Math.Expr.Data

CoField a => CoField (SmartField a) Source # 
Instance details

Defined in Domain.Algebra.SmartGroup