Module

Language.PS.SmartCST

Package
purescript-ps-cst
Repository
purescript-codegen/purescript-ps-cst

Re-exports from Language.PS.CST.ReservedNames

#quoteIfReserved Source

#appendUnderscoreIfReserved Source

Re-exports from Language.PS.CST.Sugar.Leafs

#mkRowLabels Source

mkRowLabels :: forall type_. Array (String /\ type_) -> Array { label :: Label, type_ :: type_ }

#mkRowLabel Source

mkRowLabel :: forall type_. (String /\ type_) -> { label :: Label, type_ :: type_ }

#emptyRow Source

emptyRow :: forall labelType type_. { rowLabels :: Array labelType, rowTail :: Maybe type_ }

Re-exports from Language.PS.CST.Types.Leafs

#ProperNameType_TypeConstructor Source

#ProperNameType_Namespace Source

#ProperNameType_ConstructorName Source

#ProperNameType_ClassName Source

#ProperNameType Source

#ProperName Source

newtype ProperName (proxy :: ProperNameType)

Constructors

Instances

#OpNameType_ValueOpName Source

#OpNameType_TypeOpName Source

#OpNameType Source

#OpName Source

newtype OpName (proxy :: OpNameType)

Constructors

Instances

#Comments Source

data Comments

Constructors

Instances

#ClassFundep Source

data ClassFundep

Constructors

Instances

Re-exports from Language.PS.SmartCST.ProcessModule

#Module Source

newtype Module

Constructors

#printModule Source

#moduleToCstModule Source

Re-exports from Language.PS.SmartCST.Sugar.Declaration

#booleanType Source

Re-exports from Language.PS.SmartCST.Types.Declaration

#Where Source

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

#ValueBindingFields Source

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

#RecordAccessor Source

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

#PatternGuard Source

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

#PSRow Source

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

#PSConstraint Source

#LetIn Source

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

#Lambda Source

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

#InstanceHead Source

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

#Instance Source

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

#IfThenElse Source

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

#GuardedExpr Source

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

#FixityFields Source

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

#Declaration Source

data Declaration

Constructors

Instances

#ClassHead Source

#CaseOf Source

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

#AdoBlock Source

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

#(====>>) Source

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

#(====>) Source

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

Re-exports from Language.PS.SmartCST.Types.SmartQualifiedName

Re-exports from Language.PS.SmartCST.Types.SmartQualifiedNameConstructor