Module

Language.PS.SmartCST

Re-exports from Language.PS.CST.ReservedNames

#reservedNames

#quoteIfReserved

#appendUnderscoreIfReserved

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

#mkRowLabels

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

#mkRowLabel

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

#emptyRow

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

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

#ProperNameType_TypeConstructor

#ProperNameType_Namespace

#ProperNameType_ConstructorName

#ProperNameType_ClassName

#ProperNameType

#ProperName

newtype ProperName (proxy :: ProperNameType)

Constructors

Instances

#OpNameType_ValueOpName

#OpNameType_TypeOpName

#OpNameType

#OpName

newtype OpName (proxy :: OpNameType)

Constructors

Instances

#Label

#Ident

#Comments

data Comments

Constructors

Instances

#ClassFundep

data ClassFundep

Constructors

Instances

Re-exports from Language.PS.SmartCST.ProcessModule

#Module

newtype Module

Constructors

#printModule

#moduleToCstModule

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

#typeRecord

#stringType

#numberType

#maybeType

#booleanType

#arrayType

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

#Where

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

#ValueBindingFields

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

#RecordAccessor

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

#PatternGuard

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

#PSRow

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

#PSConstraint

#LetIn

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

#Lambda

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

#InstanceHead

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

#Instance

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

#IfThenElse

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

#GuardedExpr

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

#FixityFields

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

#Declaration

data Declaration

Constructors

Instances

#DataCtor

#ClassHead

#CaseOf

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

#AdoBlock

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

#(====>>)

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

#(====>)

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

Modules