drasil-lang-0.1.60.0: A framework for code and document generation for scientific software - Language SubPackage
Safe HaskellSafe-Inferred
LanguageHaskell2010

Language.Drasil.ModelExpr.Lang

Description

The Drasil Modelling Expression language

Synopsis

Documentation

data AssocBoolOper Source #

Associative boolean operators (and, or).

Constructors

And 
Or 
Equivalence 

data StatBinOp Source #

Statements involving 2 arguments.

Constructors

Defines 

Instances

Instances details
Eq StatBinOp Source # 
Instance details

Defined in Language.Drasil.ModelExpr.Lang

data SpaceBinOp Source #

Value -> Space -> Bool operators.

Constructors

IsIn 

Instances

Instances details
Eq SpaceBinOp Source # 
Instance details

Defined in Language.Drasil.ModelExpr.Lang

data DerivType Source #

Determines the type of the derivative (either a partial derivative or a total derivative).

Constructors

Part 
Total 

Instances

Instances details
Eq DerivType Source # 
Instance details

Defined in Language.Drasil.ModelExpr.Lang

data ModelExpr where Source #

Expression language where all terms are supposed to have a meaning, but that meaning may not be that of a definite value. For example, specification expressions, especially with quantifiers, belong here.

Constructors

Lit :: Literal -> ModelExpr

Brings a literal into the expression language.

Spc :: Space -> ModelExpr

Introduce Space values into the expression language.

AssocA :: AssocArithOper -> [ModelExpr] -> ModelExpr

Takes an associative arithmetic operator with a list of expressions.

AssocB :: AssocBoolOper -> [ModelExpr] -> ModelExpr

Takes an associative boolean operator with a list of expressions.

AssocC :: AssocConcatOper -> [ModelExpr] -> ModelExpr 
Deriv :: Integer -> DerivType -> ModelExpr -> UID -> ModelExpr

Derivative syntax is: Type (Partial or Total) -> principal part of change -> with respect to For example: Deriv Part y x1 would be (dy/dx1).

C :: UID -> ModelExpr

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

FCall :: UID -> [ModelExpr] -> ModelExpr

Function applications.

Case :: Completeness -> [(ModelExpr, ModelExpr)] -> ModelExpr

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

Matrix :: [[ModelExpr]] -> ModelExpr

Represents a matrix of expressions.

Set :: Space -> [ModelExpr] -> ModelExpr

Represents a set of expressions

Variable :: String -> ModelExpr -> ModelExpr

used to refernce the (name + type = variable )

UnaryOp :: UFunc -> ModelExpr -> ModelExpr

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

UnaryOpB :: UFuncB -> ModelExpr -> ModelExpr

Unary operation for Bool -> Bool operations.

UnaryOpVV :: UFuncVV -> ModelExpr -> ModelExpr

Unary operation for Vector -> Vector operations.

UnaryOpVN :: UFuncVN -> ModelExpr -> ModelExpr

Unary operation for Vector -> Number operations.

ArithBinaryOp :: ArithBinOp -> ModelExpr -> ModelExpr -> ModelExpr

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

EqBinaryOp :: EqBinOp -> ModelExpr -> ModelExpr -> ModelExpr

Binary operator for equality between expressions.

LABinaryOp :: LABinOp -> ModelExpr -> ModelExpr -> ModelExpr

Binary operator for indexing two expressions.

OrdBinaryOp :: OrdBinOp -> ModelExpr -> ModelExpr -> ModelExpr

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

SpaceBinaryOp :: SpaceBinOp -> ModelExpr -> ModelExpr -> ModelExpr

Space-related binary operations.

StatBinaryOp :: StatBinOp -> ModelExpr -> ModelExpr -> ModelExpr

Statement-related binary operations.

VVVBinaryOp :: VVVBinOp -> ModelExpr -> ModelExpr -> ModelExpr

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

VVNBinaryOp :: VVNBinOp -> ModelExpr -> ModelExpr -> ModelExpr

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

NVVBinaryOp :: NVVBinOp -> ModelExpr -> ModelExpr -> ModelExpr

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

ESSBinaryOp :: ESSBinOp -> ModelExpr -> ModelExpr -> ModelExpr

Set operator for Element + Set -> Set

ESBBinaryOp :: ESBBinOp -> ModelExpr -> ModelExpr -> ModelExpr

Set operator for Element + Set -> Bool

Operator :: AssocArithOper -> DomainDesc t ModelExpr ModelExpr -> ModelExpr -> ModelExpr

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 ModelExpr ModelExpr -> ModelExpr

A different kind of IsIn. A UID is an element of an interval.

ForAll :: UID -> Space -> ModelExpr -> ModelExpr

Universal quantification

Instances

Instances details
ExprC ModelExpr Source # 
Instance details

Defined in Language.Drasil.Expr.Class

Methods

lit :: Literal -> ModelExpr Source #

($=) :: ModelExpr -> ModelExpr -> ModelExpr Source #

($!=) :: ModelExpr -> ModelExpr -> ModelExpr Source #

($<) :: ModelExpr -> ModelExpr -> ModelExpr Source #

($>) :: ModelExpr -> ModelExpr -> ModelExpr Source #

($<=) :: ModelExpr -> ModelExpr -> ModelExpr Source #

($>=) :: ModelExpr -> ModelExpr -> ModelExpr Source #

($.) :: ModelExpr -> ModelExpr -> ModelExpr Source #

($+) :: ModelExpr -> ModelExpr -> ModelExpr Source #

($*) :: ModelExpr -> ModelExpr -> ModelExpr Source #

($-) :: ModelExpr -> ModelExpr -> ModelExpr Source #

($/) :: ModelExpr -> ModelExpr -> ModelExpr Source #

($^) :: ModelExpr -> ModelExpr -> ModelExpr Source #

($&&) :: ModelExpr -> ModelExpr -> ModelExpr Source #

($||) :: ModelExpr -> ModelExpr -> ModelExpr Source #

in' :: ModelExpr -> ModelExpr -> ModelExpr Source #

abs_ :: ModelExpr -> ModelExpr Source #

neg :: ModelExpr -> ModelExpr Source #

log :: ModelExpr -> ModelExpr Source #

ln :: ModelExpr -> ModelExpr Source #

sqrt :: ModelExpr -> ModelExpr Source #

sin :: ModelExpr -> ModelExpr Source #

cos :: ModelExpr -> ModelExpr Source #

tan :: ModelExpr -> ModelExpr Source #

sec :: ModelExpr -> ModelExpr Source #

csc :: ModelExpr -> ModelExpr Source #

cot :: ModelExpr -> ModelExpr Source #

arcsin :: ModelExpr -> ModelExpr Source #

arccos :: ModelExpr -> ModelExpr Source #

arctan :: ModelExpr -> ModelExpr Source #

exp :: ModelExpr -> ModelExpr Source #

dim :: ModelExpr -> ModelExpr Source #

norm :: ModelExpr -> ModelExpr Source #

negVec :: ModelExpr -> ModelExpr Source #

not_ :: ModelExpr -> ModelExpr Source #

idx :: ModelExpr -> ModelExpr -> ModelExpr Source #

idxOf :: ModelExpr -> ModelExpr -> ModelExpr Source #

defint :: Symbol -> ModelExpr -> ModelExpr -> ModelExpr -> ModelExpr Source #

defsum :: Symbol -> ModelExpr -> ModelExpr -> ModelExpr -> ModelExpr Source #

defprod :: Symbol -> ModelExpr -> ModelExpr -> ModelExpr -> ModelExpr Source #

realInterval :: HasUID c => c -> RealInterval ModelExpr ModelExpr -> ModelExpr Source #

euclidean :: [ModelExpr] -> ModelExpr Source #

cross :: ModelExpr -> ModelExpr -> ModelExpr Source #

vScale :: ModelExpr -> ModelExpr -> ModelExpr Source #

vAdd :: ModelExpr -> ModelExpr -> ModelExpr Source #

vSub :: ModelExpr -> ModelExpr -> ModelExpr Source #

completeCase :: [(ModelExpr, ModelExpr)] -> ModelExpr Source #

incompleteCase :: [(ModelExpr, ModelExpr)] -> ModelExpr Source #

matrix :: [[ModelExpr]] -> ModelExpr Source #

set' :: Space -> [ModelExpr] -> ModelExpr Source #

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

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

Express ModelExpr Source #

No change, it's already a ModelExpr.

Instance details

Defined in Language.Drasil.ExprClasses

LiteralC ModelExpr Source # 
Instance details

Defined in Language.Drasil.ModelExpr.Lang

ModelExprC ModelExpr Source # 
Instance details

Defined in Language.Drasil.ModelExpr.Class

Eq ModelExpr Source #

Expressions are equal if their constructors and contents are equal.

TODO: This needs to add more equality checks

Instance details

Defined in Language.Drasil.ModelExpr.Lang

type Variable = String Source #

The variable type is just a renamed String.