stil4m/elm-syntax/2.0.0

NOTE: this package is not compatible with Elm 0.19.1

Elm.Syntax.Expression

Expression Syntax

Expression

type alias Expression =
( Range, InnerExpression )

Wrapper type for an expresion on a certain range

= UnitExpr
| Application (List Expression)
| OperatorApplication String InfixDirection Expression Expression
| FunctionOrValue String
| IfBlock Expression Expression Expression
| PrefixOperator String
| Operator String
| Integer Int
| Floatable Float
| Negation Expression
| Literal String
| CharLiteral Char
| TupledExpression (List Expression)
| ParenthesizedExpression Expression
| LetExpression LetBlock
| CaseExpression CaseBlock
| LambdaExpression Lambda
| RecordExpr (List RecordSetter)
| ListExpr (List Expression)
| QualifiedExpr ModuleName String
| RecordAccess Expression String
| RecordAccessFunction String
| RecordUpdateExpression RecordUpdate
| GLSLExpression String

Union type containing all possible expressions

type alias Lambda =
{ args : List Pattern
, expression : Expression
}

Expression for a lambda

Lets

type alias LetBlock =
{ declarations : List LetDeclaration
, expression : Expression
}

Expression for a let block

= LetFunction Function
| LetDestructuring Pattern Expression

Union type for all possible declations in a let block

Records

type alias RecordUpdate =
{ name : String
, updates : List RecordSetter
}

Expression for updating a record

type alias RecordSetter =
( String, Expression )

Expression for setting a record field

Cases

type alias CaseBlock =
{ expression : Expression
, cases : Cases
}

Expression for a case block

type alias Cases =
List Case

Type alias for a list of cases

type alias Case =
( Pattern, Expression )

A case in a case block

Functions

type alias Function =
{ documentation : Maybe Documentation
, signature : Maybe FunctionSignature
, declaration : FunctionDeclaration
}

Type alias for a full function

type alias FunctionDeclaration =
{ operatorDefinition : Bool
, name : VariablePointer
, arguments : List Pattern
, expression : Expression
}

Type alias for declaring a function

type alias FunctionSignature =
{ operatorDefinition : Bool
, name : String
, typeAnnotation : TypeAnnotation
, range : Range
}

Type alias for a function signature