dumb-cas-0.1.1.0: A computer “algebra” system that knows nothing about algebra, at the core.

Copyright(c) Justus Sagemüller 2017
LicenseGPL v3
Maintainer(@) jsagemue $ uni-koeln.de
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

CAS.Dumb.Symbols

Description

 

Synopsis

Documentation

data SymbolD σ c Source #

Constructors

NatSymbol !Integer 
PrimitiveSymbol Char 
StringSymbol c 

Instances

UnicodeSymbols c => Show (Pattern c) 

Methods

showsPrec :: Int -> Pattern c -> ShowS

show :: Pattern c -> String

showList :: [Pattern c] -> ShowS

UnicodeSymbols c => Show (Expression c) 

Methods

showsPrec :: Int -> Expression c -> ShowS

show :: Expression c -> String

showList :: [Expression c] -> ShowS

(SymbolClass σ, SCConstraint σ c, Eq c) => Eq (SymbolD σ c) Source # 

Methods

(==) :: SymbolD σ c -> SymbolD σ c -> Bool

(/=) :: SymbolD σ c -> SymbolD σ c -> Bool

(SymbolClass σ, SCConstraint σ String) => Floating (AlgebraExpr' γ σ String) Source # 

Methods

pi :: AlgebraExpr' γ σ String

exp :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

log :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

sqrt :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

(**) :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

logBase :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

sin :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

cos :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

tan :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

asin :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

acos :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

atan :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

sinh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

cosh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

tanh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

asinh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

acosh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

atanh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

log1p :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

expm1 :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

log1pexp :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

log1mexp :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

(SymbolClass σ, SCConstraint σ String) => Fractional (AlgebraExpr' γ σ String) Source # 

Methods

(/) :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

recip :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

fromRational :: Rational -> AlgebraExpr' γ σ String

(SymbolClass σ, SCConstraint σ String) => Num (AlgebraExpr' γ σ String) Source # 

Methods

(+) :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

(-) :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

(*) :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

negate :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

abs :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

signum :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

fromInteger :: Integer -> AlgebraExpr' γ σ String

ASCIISymbols c => Show (CAS (Infix c) (Encapsulation c) (Symbol c)) 

Methods

showsPrec :: Int -> CAS (Infix c) (Encapsulation c) (Symbol c) -> ShowS

show :: CAS (Infix c) (Encapsulation c) (Symbol c) -> String

showList :: [CAS (Infix c) (Encapsulation c) (Symbol c)] -> ShowS

(ASCIISymbols c, Monoid c) => Show (CAS' GapId (Infix c) (Encapsulation c) (Symbol c)) 

Methods

showsPrec :: Int -> CAS' GapId (Infix c) (Encapsulation c) (Symbol c) -> ShowS

show :: CAS' GapId (Infix c) (Encapsulation c) (Symbol c) -> String

showList :: [CAS' GapId (Infix c) (Encapsulation c) (Symbol c)] -> ShowS

data Infix s Source #

Constructors

Infix 

Fields

Instances

Eq s => Eq (Infix s) Source # 

Methods

(==) :: Infix s -> Infix s -> Bool

(/=) :: Infix s -> Infix s -> Bool

UnicodeSymbols c => Show (Pattern c) 

Methods

showsPrec :: Int -> Pattern c -> ShowS

show :: Pattern c -> String

showList :: [Pattern c] -> ShowS

UnicodeSymbols c => Show (Expression c) 

Methods

showsPrec :: Int -> Expression c -> ShowS

show :: Expression c -> String

showList :: [Expression c] -> ShowS

(SymbolClass σ, SCConstraint σ String) => Floating (AlgebraExpr' γ σ String) Source # 

Methods

pi :: AlgebraExpr' γ σ String

exp :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

log :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

sqrt :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

(**) :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

logBase :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

sin :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

cos :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

tan :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

asin :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

acos :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

atan :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

sinh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

cosh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

tanh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

asinh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

acosh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

atanh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

log1p :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

expm1 :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

log1pexp :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

log1mexp :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

(SymbolClass σ, SCConstraint σ String) => Fractional (AlgebraExpr' γ σ String) Source # 

Methods

(/) :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

recip :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

fromRational :: Rational -> AlgebraExpr' γ σ String

(SymbolClass σ, SCConstraint σ String) => Num (AlgebraExpr' γ σ String) Source # 

Methods

(+) :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

(-) :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

(*) :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

negate :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

abs :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

signum :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

fromInteger :: Integer -> AlgebraExpr' γ σ String

ASCIISymbols c => Show (CAS (Infix c) (Encapsulation c) (Symbol c)) 

Methods

showsPrec :: Int -> CAS (Infix c) (Encapsulation c) (Symbol c) -> ShowS

show :: CAS (Infix c) (Encapsulation c) (Symbol c) -> String

showList :: [CAS (Infix c) (Encapsulation c) (Symbol c)] -> ShowS

(ASCIISymbols c, Monoid c) => Show (CAS' GapId (Infix c) (Encapsulation c) (Symbol c)) 

Methods

showsPrec :: Int -> CAS' GapId (Infix c) (Encapsulation c) (Symbol c) -> ShowS

show :: CAS' GapId (Infix c) (Encapsulation c) (Symbol c) -> String

showList :: [CAS' GapId (Infix c) (Encapsulation c) (Symbol c)] -> ShowS

data Encapsulation s Source #

Constructors

Encapsulation 

Instances

Eq (Encapsulation String) Source # 

Methods

(==) :: Encapsulation String -> Encapsulation String -> Bool

(/=) :: Encapsulation String -> Encapsulation String -> Bool

UnicodeSymbols c => Show (Pattern c) 

Methods

showsPrec :: Int -> Pattern c -> ShowS

show :: Pattern c -> String

showList :: [Pattern c] -> ShowS

UnicodeSymbols c => Show (Expression c) 

Methods

showsPrec :: Int -> Expression c -> ShowS

show :: Expression c -> String

showList :: [Expression c] -> ShowS

(SymbolClass σ, SCConstraint σ String) => Floating (AlgebraExpr' γ σ String) Source # 

Methods

pi :: AlgebraExpr' γ σ String

exp :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

log :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

sqrt :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

(**) :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

logBase :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

sin :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

cos :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

tan :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

asin :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

acos :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

atan :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

sinh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

cosh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

tanh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

asinh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

acosh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

atanh :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

log1p :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

expm1 :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

log1pexp :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

log1mexp :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

(SymbolClass σ, SCConstraint σ String) => Fractional (AlgebraExpr' γ σ String) Source # 

Methods

(/) :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

recip :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

fromRational :: Rational -> AlgebraExpr' γ σ String

(SymbolClass σ, SCConstraint σ String) => Num (AlgebraExpr' γ σ String) Source # 

Methods

(+) :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

(-) :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

(*) :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

negate :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

abs :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

signum :: AlgebraExpr' γ σ String -> AlgebraExpr' γ σ String

fromInteger :: Integer -> AlgebraExpr' γ σ String

ASCIISymbols c => Show (CAS (Infix c) (Encapsulation c) (Symbol c)) 

Methods

showsPrec :: Int -> CAS (Infix c) (Encapsulation c) (Symbol c) -> ShowS

show :: CAS (Infix c) (Encapsulation c) (Symbol c) -> String

showList :: [CAS (Infix c) (Encapsulation c) (Symbol c)] -> ShowS

(ASCIISymbols c, Monoid c) => Show (CAS' GapId (Infix c) (Encapsulation c) (Symbol c)) 

Methods

showsPrec :: Int -> CAS' GapId (Infix c) (Encapsulation c) (Symbol c) -> ShowS

show :: CAS' GapId (Infix c) (Encapsulation c) (Symbol c) -> String

showList :: [CAS' GapId (Infix c) (Encapsulation c) (Symbol c)] -> ShowS

type AlgebraExpr σ l = CAS (Infix l) (Encapsulation l) (SymbolD σ l) Source #

type AlgebraExpr' γ σ l = CAS' γ (Infix l) (Encapsulation l) (SymbolD σ l) Source #

don'tParenthesise :: Monoid s¹ => CAS' γ (Infix s²) (Encapsulation s¹) s⁰ -> CAS' γ (Infix s²) (Encapsulation s¹) s⁰ Source #

symbolInfix Source #

Arguments

:: s²

The operator we want to describe

-> CAS' γ s² s¹ s⁰ 
-> CAS' γ s² s¹ s⁰ 
-> CAS' γ s² s¹ s⁰ 

symbolFunction :: Monoid s¹ => s¹ -> CAS' γ (Infix s²) (Encapsulation s¹) s⁰ -> CAS' γ (Infix s²) (Encapsulation s¹) s⁰ Source #

class ASCIISymbols c where Source #

Minimal complete definition

fromASCIISymbol, toASCIISymbols

Methods

fromASCIISymbol :: Char -> c Source #

toASCIISymbols :: c -> String Source #

Instances

ASCIISymbols String Source # 

Methods

fromASCIISymbol :: Char -> String Source #

toASCIISymbols :: String -> String Source #

type RenderingCombinator σ c r Source #

Arguments

 = Bool

Should the result be parenthesised?

-> Maybe r

Left context

-> SymbolD σ c

Central expressionfunctioninfix to render

-> Maybe r

Right context

-> r

Rendering result

data ContextFixity Source #

Constructors

AtLHS Fixity 
AtRHS Fixity 
AtFunctionArgument 

Instances

class UnicodeSymbols c where Source #

Minimal complete definition

fromUnicodeSymbol, toUnicodeSymbols

Methods

fromUnicodeSymbol :: Char -> c Source #

toUnicodeSymbols :: c -> String Source #

Instances

UnicodeSymbols String Source # 

Methods

fromUnicodeSymbol :: Char -> String Source #

toUnicodeSymbols :: String -> String Source #

class SymbolClass σ where Source #

Minimal complete definition

fromCharSymbol

Associated Types

type SCConstraint σ :: * -> Constraint Source #

Methods

fromCharSymbol :: (Functor p, SCConstraint σ c) => p σ -> Char -> c Source #

normaliseSymbols :: forall σ c γ s² s¹. (SymbolClass σ, SCConstraint σ c) => CAS' γ s² s¹ (SymbolD σ c) -> CAS' γ s² s¹ (SymbolD σ c) Source #

(%$>) :: forall σ c c' γ s² s¹. (SymbolClass σ, SCConstraint σ c) => (c -> c') -> CAS' γ s² s¹ (SymbolD σ c) -> CAS' γ s² s¹ (SymbolD σ c') infixl 4 Source #

Transform the symbols of an expression, in their underlying representation.

(map succ%$> 𝑎+𝑝) * 𝑥  ≡  (𝑏+𝑞) * 𝑥

continueExpr Source #

Arguments

:: (Eq l, Monoid l) 
=> (AlgebraExpr' γ σ l -> AlgebraExpr' γ σ l -> AlgebraExpr' γ σ l)

Combinator to use for chaining the new expression to the old ones

-> (AlgebraExpr' γ σ l -> AlgebraExpr' γ σ l)

Transformation to apply to the rightmost expression in the previous chain

-> AlgebraExpr' γ σ l -> AlgebraExpr' γ σ l

Transformation which appends the result.

(&~~!) :: (Eq l, Eq (Encapsulation l), SymbolClass σ, SCConstraint σ l, Show (AlgebraExpr σ l), Show (AlgebraPattern σ l)) => AlgebraExpr σ l -> [AlgebraPattern σ l] -> AlgebraExpr σ l infixl 1 Source #

Apply a sequence of pattern-transformations and yield the result concatenated to the original via the corresponding chain-operator. Because only the rightmost expression in a chain is processed, this can be iterated, giving a chain of intermediate results.

If one of the patterns does not match, this manipulator will raise an error.

(&~~:) :: (Eq l, Eq (Encapsulation l), SymbolClass σ, SCConstraint σ l, Show (AlgebraExpr σ l), Show (AlgebraPattern σ l)) => AlgebraExpr σ l -> [AlgebraPattern σ l] -> AlgebraExpr σ l infixl 1 Source #

Apply a sequence of pattern-transformations, each in every spot possible, and yield the result concatenated to the original via the corresponding chain-operator. Because only the rightmost expression in a chain is processed, this can be iterated, giving a chain of intermediate results.