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

Drasil.Code.CodeExpr.Lang

Contents

Synopsis

CodeExpr

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.

AssocC :: AssocConcatOper -> [CodeExpr] -> CodeExpr 
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.

Set :: Space -> [CodeExpr] -> CodeExpr

Represents a set of expressions

Variable :: String -> CodeExpr -> CodeExpr

used to refernce the (name + type = variable )

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).

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).

NVVBinaryOp :: NVVBinOp -> CodeExpr -> CodeExpr -> CodeExpr

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

ESSBinaryOp :: ESSBinOp -> CodeExpr -> CodeExpr -> CodeExpr

Set operator for Set + Set -> Set

ESBBinaryOp :: ESBBinOp -> CodeExpr -> CodeExpr -> CodeExpr

Set operator for Element + Set -> Bool

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
CodeExprC CodeExpr Source # 
Instance details

Defined in Drasil.Code.CodeExpr.Class

ExprC CodeExpr Source # 
Instance details

Defined in Drasil.Code.CodeExpr.Lang

Methods

lit :: Literal -> CodeExpr Source #

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

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

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

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

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

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

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

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

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

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

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

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

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

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

in' :: CodeExpr -> CodeExpr -> CodeExpr Source #

abs_ :: CodeExpr -> CodeExpr Source #

neg :: CodeExpr -> CodeExpr Source #

log :: CodeExpr -> CodeExpr Source #

ln :: CodeExpr -> CodeExpr Source #

sqrt :: CodeExpr -> CodeExpr Source #

sin :: CodeExpr -> CodeExpr Source #

cos :: CodeExpr -> CodeExpr Source #

tan :: CodeExpr -> CodeExpr Source #

sec :: CodeExpr -> CodeExpr Source #

csc :: CodeExpr -> CodeExpr Source #

cot :: CodeExpr -> CodeExpr Source #

arcsin :: CodeExpr -> CodeExpr Source #

arccos :: CodeExpr -> CodeExpr Source #

arctan :: CodeExpr -> CodeExpr Source #

exp :: CodeExpr -> CodeExpr Source #

dim :: CodeExpr -> CodeExpr Source #

norm :: CodeExpr -> CodeExpr Source #

negVec :: CodeExpr -> CodeExpr Source #

not_ :: CodeExpr -> CodeExpr Source #

idx :: CodeExpr -> CodeExpr -> CodeExpr Source #

idxOf :: CodeExpr -> CodeExpr -> CodeExpr Source #

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

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

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

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

euclidean :: [CodeExpr] -> CodeExpr Source #

cross :: CodeExpr -> CodeExpr -> CodeExpr Source #

vScale :: CodeExpr -> CodeExpr -> CodeExpr Source #

vAdd :: CodeExpr -> CodeExpr -> CodeExpr Source #

vSub :: CodeExpr -> CodeExpr -> CodeExpr Source #

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

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

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

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

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

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

LiteralC CodeExpr Source # 
Instance details

Defined in Drasil.Code.CodeExpr.Lang