drasil-code-base-0.1.9.0: A framework for code and document generation for scientific software - Build System SubPackage
Safe HaskellNone
LanguageHaskell2010

Language.Drasil.Code.Expr.Development

Description

Re-exporting modules

Synopsis

Documentation

data CodeExpr where Source #

Expression language where all terms also denote a term in GOOL (i.e. translation is total and meaning preserving).

Constructors

Lit :: Literal -> CodeExpr

Brings literals into the expression language.

AssocA :: AssocArithOper -> [CodeExpr] -> CodeExpr

Takes an associative arithmetic operator with a list of expressions.

AssocB :: AssocBoolOper -> [CodeExpr] -> CodeExpr

Takes an associative boolean operator with a list of expressions.

C :: UID -> CodeExpr

C stands for Chunk, for referring to a chunk in an expression. Implicitly assumes that the chunk has a symbol.

FCall :: UID -> [CodeExpr] -> [(UID, CodeExpr)] -> CodeExpr

A function call accepts a list of parameters and a list of named parameters. For example

  • F(x) is (FCall F [x] []).
  • F(x,y) would be (FCall F [x,y]).
  • F(x,n=y) would be (FCall F [x] [(n,y)]).
New :: UID -> [CodeExpr] -> [(UID, CodeExpr)] -> CodeExpr

Actor creation given UID, parameters, and named parameters.

Message :: UID -> UID -> [CodeExpr] -> [(UID, CodeExpr)] -> CodeExpr

Message an actor:

  • 1st UID is the actor,
  • 2nd UID is the method.
Field :: UID -> UID -> CodeExpr

Access a field of an actor:

  • 1st UID is the actor,
  • 2nd UID is the field.
Case :: Completeness -> [(CodeExpr, CodeExpr)] -> CodeExpr

For multi-case expressions, each pair represents one case.

Matrix :: [[CodeExpr]] -> CodeExpr

Represents a matrix of expressions.

UnaryOp :: UFunc -> CodeExpr -> CodeExpr

Unary operation for most functions (eg. sin, cos, log, etc.).

UnaryOpB :: UFuncB -> CodeExpr -> CodeExpr

Unary operation for Bool -> Bool operations.

UnaryOpVV :: UFuncVV -> CodeExpr -> CodeExpr

Unary operation for Vector -> Vector operations.

UnaryOpVN :: UFuncVN -> CodeExpr -> CodeExpr

Unary operation for Vector -> Number operations.

ArithBinaryOp :: ArithBinOp -> CodeExpr -> CodeExpr -> CodeExpr

Binary operator for arithmetic between expressions (fractional, power, and subtraction).

BoolBinaryOp :: BoolBinOp -> CodeExpr -> CodeExpr -> CodeExpr

Binary operator for boolean operators (implies, iff).

EqBinaryOp :: EqBinOp -> CodeExpr -> CodeExpr -> CodeExpr

Binary operator for equality between expressions.

LABinaryOp :: LABinOp -> CodeExpr -> CodeExpr -> CodeExpr

Binary operator for indexing two expressions.

OrdBinaryOp :: OrdBinOp -> CodeExpr -> CodeExpr -> CodeExpr

Binary operator for ordering expressions (less than, greater than, etc.).

VVVBinaryOp :: VVVBinOp -> CodeExpr -> CodeExpr -> CodeExpr

Binary operator for Vector x Vector -> Vector operations (cross product).

VVNBinaryOp :: VVNBinOp -> CodeExpr -> CodeExpr -> CodeExpr

Binary operator for Vector x Vector -> Number operations (dot product).

Operator :: AssocArithOper -> DiscreteDomainDesc CodeExpr CodeExpr -> CodeExpr -> CodeExpr

Operators are generalized arithmetic operators over a DomainDesc of an Expr. Could be called BigOp. ex: Summation is represented via Add over a discrete domain.

RealI :: UID -> RealInterval CodeExpr CodeExpr -> CodeExpr

The expression is an element of a space. IsIn :: Expr -> Space -> Expr | A different kind of IsIn. A UID is an element of an interval.

Instances

Instances details
ExprC CodeExpr Source # 
Instance details

Defined in Language.Drasil.Code.Expr

Methods

lit :: Literal -> CodeExpr #

($=) :: CodeExpr -> CodeExpr -> CodeExpr #

($!=) :: CodeExpr -> CodeExpr -> CodeExpr #

($<) :: CodeExpr -> CodeExpr -> CodeExpr #

($>) :: CodeExpr -> CodeExpr -> CodeExpr #

($<=) :: CodeExpr -> CodeExpr -> CodeExpr #

($>=) :: CodeExpr -> CodeExpr -> CodeExpr #

($.) :: CodeExpr -> CodeExpr -> CodeExpr #

addI :: CodeExpr -> CodeExpr -> CodeExpr #

addRe :: CodeExpr -> CodeExpr -> CodeExpr #

mulI :: CodeExpr -> CodeExpr -> CodeExpr #

mulRe :: CodeExpr -> CodeExpr -> CodeExpr #

($-) :: CodeExpr -> CodeExpr -> CodeExpr #

($/) :: CodeExpr -> CodeExpr -> CodeExpr #

($^) :: CodeExpr -> CodeExpr -> CodeExpr #

($=>) :: CodeExpr -> CodeExpr -> CodeExpr #

($<=>) :: CodeExpr -> CodeExpr -> CodeExpr #

($&&) :: CodeExpr -> CodeExpr -> CodeExpr #

($||) :: CodeExpr -> CodeExpr -> CodeExpr #

abs_ :: CodeExpr -> CodeExpr #

neg :: CodeExpr -> CodeExpr #

log :: CodeExpr -> CodeExpr #

ln :: CodeExpr -> CodeExpr #

sqrt :: CodeExpr -> CodeExpr #

sin :: CodeExpr -> CodeExpr #

cos :: CodeExpr -> CodeExpr #

tan :: CodeExpr -> CodeExpr #

sec :: CodeExpr -> CodeExpr #

csc :: CodeExpr -> CodeExpr #

cot :: CodeExpr -> CodeExpr #

arcsin :: CodeExpr -> CodeExpr #

arccos :: CodeExpr -> CodeExpr #

arctan :: CodeExpr -> CodeExpr #

exp :: CodeExpr -> CodeExpr #

dim :: CodeExpr -> CodeExpr #

norm :: CodeExpr -> CodeExpr #

negVec :: CodeExpr -> CodeExpr #

not_ :: CodeExpr -> CodeExpr #

idx :: CodeExpr -> CodeExpr -> CodeExpr #

defint :: Symbol -> CodeExpr -> CodeExpr -> CodeExpr -> CodeExpr #

defsum :: Symbol -> CodeExpr -> CodeExpr -> CodeExpr -> CodeExpr #

defprod :: Symbol -> CodeExpr -> CodeExpr -> CodeExpr -> CodeExpr #

realInterval :: HasUID c => c -> RealInterval CodeExpr CodeExpr -> CodeExpr #

euclidean :: [CodeExpr] -> CodeExpr #

cross :: CodeExpr -> CodeExpr -> CodeExpr #

completeCase :: [(CodeExpr, CodeExpr)] -> CodeExpr #

incompleteCase :: [(CodeExpr, CodeExpr)] -> CodeExpr #

matrix :: [[CodeExpr]] -> CodeExpr #

m2x2 :: CodeExpr -> CodeExpr -> CodeExpr -> CodeExpr -> CodeExpr #

vec2D :: CodeExpr -> CodeExpr -> CodeExpr #

dgnl2x2 :: CodeExpr -> CodeExpr -> CodeExpr #

apply :: (HasUID f, HasSymbol f) => f -> [CodeExpr] -> CodeExpr #

applyWithNamedArgs :: (HasUID f, HasSymbol f, HasUID a, IsArgumentName a) => f -> [CodeExpr] -> [(a, CodeExpr)] -> CodeExpr #

sy :: (HasUID c, HasSymbol c) => c -> CodeExpr #

LiteralC CodeExpr Source # 
Instance details

Defined in Language.Drasil.Code.Expr

CodeExprC CodeExpr Source # 
Instance details

Defined in Language.Drasil.Code.Expr.Class

data ArithBinOp Source #

Arithmetic operators (fractional, power, and subtraction).

Constructors

Frac 
Pow 
Subt 

Instances

Instances details
Eq ArithBinOp Source # 
Instance details

Defined in Language.Drasil.Code.Expr

data EqBinOp Source #

Equality operators (equal or not equal).

Constructors

Eq 
NEq 

Instances

Instances details
Eq EqBinOp Source # 
Instance details

Defined in Language.Drasil.Code.Expr

Methods

(==) :: EqBinOp -> EqBinOp -> Bool #

(/=) :: EqBinOp -> EqBinOp -> Bool #

data BoolBinOp Source #

Conditional and Biconditional operators (Expressions can imply one another, or exist if and only if another expression exists).

Constructors

Impl 
Iff 

Instances

Instances details
Eq BoolBinOp Source # 
Instance details

Defined in Language.Drasil.Code.Expr

data LABinOp Source #

Index operator.

Constructors

Index 

Instances

Instances details
Eq LABinOp Source # 
Instance details

Defined in Language.Drasil.Code.Expr

Methods

(==) :: LABinOp -> LABinOp -> Bool #

(/=) :: LABinOp -> LABinOp -> Bool #

data OrdBinOp Source #

Ordered binary operators (less than, greater than, less than or equal to, greater than or equal to).

Constructors

Lt 
Gt 
LEq 
GEq 

Instances

Instances details
Eq OrdBinOp Source # 
Instance details

Defined in Language.Drasil.Code.Expr

data VVVBinOp Source #

Vector x Vector -> Vector binary operations (cross product).

Constructors

Cross 

Instances

Instances details
Eq VVVBinOp Source # 
Instance details

Defined in Language.Drasil.Code.Expr

data VVNBinOp Source #

Vector x Vector -> Number binary operations (dot product).

Constructors

Dot 

Instances

Instances details
Eq VVNBinOp Source # 
Instance details

Defined in Language.Drasil.Code.Expr

data AssocArithOper Source #

Associative operators (adding and multiplication). Also specifies whether it is for integers or for real numbers.

Constructors

AddI 
AddRe 
MulI 
MulRe 

Instances

Instances details
Eq AssocArithOper Source # 
Instance details

Defined in Language.Drasil.Code.Expr

data AssocBoolOper Source #

Associative boolean operators (and, or).

Constructors

And 
Or 

Instances

Instances details
Eq AssocBoolOper Source # 
Instance details

Defined in Language.Drasil.Code.Expr

data UFunc Source #

Unary functions (abs, log, ln, sin, etc.).

Constructors

Abs 
Log 
Ln 
Sin 
Cos 
Tan 
Sec 
Csc 
Cot 
Arcsin 
Arccos 
Arctan 
Exp 
Sqrt 
Neg 

Instances

Instances details
Eq UFunc Source # 
Instance details

Defined in Language.Drasil.Code.Expr

Methods

(==) :: UFunc -> UFunc -> Bool #

(/=) :: UFunc -> UFunc -> Bool #

data UFuncB Source #

Bool -> Bool operators.

Constructors

Not 

Instances

Instances details
Eq UFuncB Source # 
Instance details

Defined in Language.Drasil.Code.Expr

Methods

(==) :: UFuncB -> UFuncB -> Bool #

(/=) :: UFuncB -> UFuncB -> Bool #

data UFuncVV Source #

Vector -> Vector operators.

Constructors

NegV 

Instances

Instances details
Eq UFuncVV Source # 
Instance details

Defined in Language.Drasil.Code.Expr

Methods

(==) :: UFuncVV -> UFuncVV -> Bool #

(/=) :: UFuncVV -> UFuncVV -> Bool #

data UFuncVN Source #

Vector -> Number operators.

Constructors

Norm 
Dim 

Instances

Instances details
Eq UFuncVN Source # 
Instance details

Defined in Language.Drasil.Code.Expr

Methods

(==) :: UFuncVN -> UFuncVN -> Bool #

(/=) :: UFuncVN -> UFuncVN -> Bool #

eDep :: CodeExpr -> [UID] Source #

Get dependencies from an equation.

eDep' :: CodeExpr -> [UID] Source #

Get dependencies from an equation, without functions.

eNamesRI :: RealInterval CodeExpr CodeExpr -> [UID] Source #

Generic traversal of everything that could come from an interval to names (similar to eNames).

eNamesRI' :: RealInterval CodeExpr CodeExpr -> [UID] Source #

Generic traversal of everything that could come from an interval to names without functions (similar to eNames').

eprec :: CodeExpr -> Int Source #

eprec - Expression precedence.

precA :: AssocArithOper -> Int Source #

precA - precedence for arithmetic-related Binary-Associative (Commutative) operators.

precB :: AssocBoolOper -> Int Source #

precB - precedence for boolean-related Binary-Associative (Commutative) operators.

expr :: Expr -> CodeExpr Source #

Render an algebraic expression into our code expression language.

realInterval :: RealInterval Expr Expr -> RealInterval CodeExpr CodeExpr Source #

Convert RealInterval Expr Exprs into RealInterval CodeExpr CodeExprs.

constraint :: ConstraintE -> Constraint CodeExpr Source #

Convert constrained expressions (ConstraintE) into Constraint''CodeExprs.