Module

Language.PS.SmartCST.Types.Declaration

#Declaration

data Declaration

Constructors

Instances

#InstanceHead

type InstanceHead = { instClass :: SmartQualifiedName (ProperName ProperNameType_ClassName), instConstraints :: Array PSConstraint, instName :: Ident, instTypes :: NonEmptyArray PSType }

#FixityFields

type FixityFields = { keyword :: Fixity, operator :: FixityOp, precedence :: Int }

#DataCtor

#PSRow

type PSRow = { rowLabels :: Array { label :: Label, type_ :: PSType }, rowTail :: Maybe PSType }

#PSConstraint

#ClassHead

#ValueBindingFields

type ValueBindingFields = { binders :: Array Binder, guarded :: Guarded, name :: Ident }

#Where

type Where = { expr :: Expr, whereBindings :: Array LetBinding }

#GuardedExpr

type GuardedExpr = { patterns :: NonEmptyArray PatternGuard, where_ :: Where }

#PatternGuard

type PatternGuard = { binder :: Maybe Binder, expr :: Expr }

#RecordAccessor

type RecordAccessor = { recExpr :: Expr, recPath :: NonEmptyArray Label }

#Lambda

type Lambda = { binders :: NonEmptyArray Binder, body :: Expr }

#IfThenElse

type IfThenElse = { cond :: Expr, false_ :: Expr, true_ :: Expr }

#CaseOf

type CaseOf = { branches :: NonEmptyArray { binders :: NonEmptyArray Binder, body :: Guarded }, head :: NonEmptyArray Expr }

#LetIn

type LetIn = { bindings :: NonEmptyArray LetBinding, body :: Expr }

#AdoBlock

type AdoBlock = { result :: Expr, statements :: Array DoStatement }

#Instance

type Instance = { body :: Array InstanceBinding, head :: InstanceHead }

#(====>)

Operator alias for Language.PS.SmartCST.Types.Declaration.ExprLambda (left-associative / precedence 5)

#(====>>)

Operator alias for Language.PS.SmartCST.Types.Declaration.TypeArr (right-associative / precedence 5)

Modules