ghc-7.8.2: The GHC API

Safe Haskell | None
Language | Haskell98

HsExpr

Contents

- Expressions proper

Description

Abstract Haskell syntax for expressions.

Synopsis

- type LHsExpr id = Located (HsExpr id)
- type PostTcExpr = HsExpr Id
- type PostTcTable = [(Name, PostTcExpr)]
- noPostTcExpr :: PostTcExpr
- noPostTcTable :: PostTcTable
- type SyntaxExpr id = HsExpr id
- noSyntaxExpr :: SyntaxExpr id
- type CmdSyntaxTable id = [(Name, SyntaxExpr id)]
- noSyntaxTable :: CmdSyntaxTable id
- data HsExpr id
  - = HsVar id
  - | HsIPVar HsIPName
  - | HsOverLit (HsOverLit id)
  - | HsLit HsLit
  - | HsLam (MatchGroup id (LHsExpr id))
  - | HsLamCase PostTcType (MatchGroup id (LHsExpr id))
  - | HsApp (LHsExpr id) (LHsExpr id)
  - | OpApp (LHsExpr id) (LHsExpr id) Fixity (LHsExpr id)
  - | NegApp (LHsExpr id) (SyntaxExpr id)
  - | HsPar (LHsExpr id)
  - | SectionL (LHsExpr id) (LHsExpr id)
  - | SectionR (LHsExpr id) (LHsExpr id)
  - | ExplicitTuple [HsTupArg id] Boxity
  - | HsCase (LHsExpr id) (MatchGroup id (LHsExpr id))
  - | HsIf (Maybe (SyntaxExpr id)) (LHsExpr id) (LHsExpr id) (LHsExpr id)
  - | HsMultiIf PostTcType [LGRHS id (LHsExpr id)]
  - | HsLet (HsLocalBinds id) (LHsExpr id)
  - | HsDo (HsStmtContext Name) [ExprLStmt id] PostTcType
  - | ExplicitList PostTcType (Maybe (SyntaxExpr id)) [LHsExpr id]
  - | ExplicitPArr PostTcType [LHsExpr id]
  - | RecordCon (Located id) PostTcExpr (HsRecordBinds id)
  - | RecordUpd (LHsExpr id) (HsRecordBinds id) [DataCon] [PostTcType] [PostTcType]
  - | ExprWithTySig (LHsExpr id) (LHsType id)
  - | ExprWithTySigOut (LHsExpr id) (LHsType Name)
  - | ArithSeq PostTcExpr (Maybe (SyntaxExpr id)) (ArithSeqInfo id)
  - | PArrSeq PostTcExpr (ArithSeqInfo id)
  - | HsSCC FastString (LHsExpr id)
  - | HsCoreAnn FastString (LHsExpr id)
  - | HsBracket (HsBracket id)
  - | HsRnBracketOut (HsBracket Name) [PendingRnSplice]
  - | HsTcBracketOut (HsBracket Name) [PendingTcSplice]
  - | HsSpliceE Bool (HsSplice id)
  - | HsQuasiQuoteE (HsQuasiQuote id)
  - | HsProc (LPat id) (LHsCmdTop id)
  - | HsArrApp (LHsExpr id) (LHsExpr id) PostTcType HsArrAppType Bool
  - | HsArrForm (LHsExpr id) (Maybe Fixity) [LHsCmdTop id]
  - | HsTick (Tickish id) (LHsExpr id)
  - | HsBinTick Int Int (LHsExpr id)
  - | HsTickPragma (FastString, (Int, Int), (Int, Int)) (LHsExpr id)
  - | EWildPat
  - | EAsPat (Located id) (LHsExpr id)
  - | EViewPat (LHsExpr id) (LHsExpr id)
  - | ELazyPat (LHsExpr id)
  - | HsType (LHsType id)
  - | HsWrap HsWrapper (HsExpr id)
  - | HsUnboundVar RdrName
- data HsTupArg id
  - = Present (LHsExpr id)
  - | Missing PostTcType
- tupArgPresent :: HsTupArg id -> Bool
- data PendingRnSplice
  - = PendingRnExpSplice (HsSplice Name)
  - | PendingRnPatSplice (HsSplice Name)
  - | PendingRnTypeSplice (HsSplice Name)
  - | PendingRnDeclSplice (HsSplice Name)
  - | PendingRnCrossStageSplice Name
- type PendingTcSplice = (Name, LHsExpr Id)
- pprLExpr :: OutputableBndr id => LHsExpr id -> SDoc
- pprExpr :: OutputableBndr id => HsExpr id -> SDoc
- isQuietHsExpr :: HsExpr id -> Bool
- pprBinds :: (OutputableBndr idL, OutputableBndr idR) => HsLocalBindsLR idL idR -> SDoc
- ppr_lexpr :: OutputableBndr id => LHsExpr id -> SDoc
- ppr_expr :: forall id. OutputableBndr id => HsExpr id -> SDoc
- pprDebugParendExpr :: OutputableBndr id => LHsExpr id -> SDoc
- pprParendExpr :: OutputableBndr id => LHsExpr id -> SDoc
- hsExprNeedsParens :: HsExpr id -> Bool
- isAtomicHsExpr :: HsExpr id -> Bool
- type LHsCmd id = Located (HsCmd id)
- data HsCmd id
  - = HsCmdArrApp (LHsExpr id) (LHsExpr id) PostTcType HsArrAppType Bool
  - | HsCmdArrForm (LHsExpr id) (Maybe Fixity) [LHsCmdTop id]
  - | HsCmdApp (LHsCmd id) (LHsExpr id)
  - | HsCmdLam (MatchGroup id (LHsCmd id))
  - | HsCmdPar (LHsCmd id)
  - | HsCmdCase (LHsExpr id) (MatchGroup id (LHsCmd id))
  - | HsCmdIf (Maybe (SyntaxExpr id)) (LHsExpr id) (LHsCmd id) (LHsCmd id)
  - | HsCmdLet (HsLocalBinds id) (LHsCmd id)
  - | HsCmdDo [CmdLStmt id] PostTcType
  - | HsCmdCast TcCoercion (HsCmd id)
- data HsArrAppType
  - = HsHigherOrderApp
  - | HsFirstOrderApp
- type LHsCmdTop id = Located (HsCmdTop id)
- data HsCmdTop id = HsCmdTop (LHsCmd id) PostTcType PostTcType (CmdSyntaxTable id)
- pprLCmd :: OutputableBndr id => LHsCmd id -> SDoc
- pprCmd :: OutputableBndr id => HsCmd id -> SDoc
- isQuietHsCmd :: HsCmd id -> Bool
- ppr_lcmd :: OutputableBndr id => LHsCmd id -> SDoc
- ppr_cmd :: forall id. OutputableBndr id => HsCmd id -> SDoc
- pprCmdArg :: OutputableBndr id => HsCmdTop id -> SDoc
- type HsRecordBinds id = HsRecFields id (LHsExpr id)
- data MatchGroup id body = MG {
  - mg_alts :: [LMatch id body]
  - mg_arg_tys :: [PostTcType]
  - mg_res_ty :: PostTcType
  }
- type LMatch id body = Located (Match id body)
- data Match id body = Match [LPat id] (Maybe (LHsType id)) (GRHSs id body)
- isEmptyMatchGroup :: MatchGroup id body -> Bool
- matchGroupArity :: MatchGroup id body -> Arity
- hsLMatchPats :: LMatch id body -> [LPat id]
- data GRHSs id body = GRHSs {
  - grhssGRHSs :: [LGRHS id body]
  - grhssLocalBinds :: HsLocalBinds id
  }
- type LGRHS id body = Located (GRHS id body)
- data GRHS id body = GRHS [GuardLStmt id] body
- pprMatches :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> MatchGroup idR body -> SDoc
- pprFunBind :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => idL -> Bool -> MatchGroup idR body -> SDoc
- pprPatBind :: forall bndr id body. (OutputableBndr bndr, OutputableBndr id, Outputable body) => LPat bndr -> GRHSs id body -> SDoc
- pprMatch :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> Match idR body -> SDoc
- pprGRHSs :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> GRHSs idR body -> SDoc
- pprGRHS :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> GRHS idR body -> SDoc
- pp_rhs :: Outputable body => HsMatchContext idL -> body -> SDoc
- type LStmt id body = Located (StmtLR id id body)
- type LStmtLR idL idR body = Located (StmtLR idL idR body)
- type Stmt id body = StmtLR id id body
- type CmdLStmt id = LStmt id (LHsCmd id)
- type CmdStmt id = Stmt id (LHsCmd id)
- type ExprLStmt id = LStmt id (LHsExpr id)
- type ExprStmt id = Stmt id (LHsExpr id)
- type GuardLStmt id = LStmt id (LHsExpr id)
- type GuardStmt id = Stmt id (LHsExpr id)
- type GhciLStmt id = LStmt id (LHsExpr id)
- type GhciStmt id = Stmt id (LHsExpr id)
- data StmtLR idL idR body
  - = LastStmt body (SyntaxExpr idR)
  - | BindStmt (LPat idL) body (SyntaxExpr idR) (SyntaxExpr idR)
  - | BodyStmt body (SyntaxExpr idR) (SyntaxExpr idR) PostTcType
  - | LetStmt (HsLocalBindsLR idL idR)
  - | ParStmt [ParStmtBlock idL idR] (SyntaxExpr idR) (SyntaxExpr idR)
  - | TransStmt {
    - trS_form :: TransForm
    - trS_stmts :: [ExprLStmt idL]
    - trS_bndrs :: [(idR, idR)]
    - trS_using :: LHsExpr idR
    - trS_by :: Maybe (LHsExpr idR)
    - trS_ret :: SyntaxExpr idR
    - trS_bind :: SyntaxExpr idR
    - trS_fmap :: SyntaxExpr idR
    }
  - | RecStmt {
    - recS_stmts :: [LStmtLR idL idR body]
    - recS_later_ids :: [idR]
    - recS_rec_ids :: [idR]
    - recS_bind_fn :: SyntaxExpr idR
    - recS_ret_fn :: SyntaxExpr idR
    - recS_mfix_fn :: SyntaxExpr idR
    - recS_later_rets :: [PostTcExpr]
    - recS_rec_rets :: [PostTcExpr]
    - recS_ret_ty :: PostTcType
    }
- data TransForm
  - = ThenForm
  - | GroupForm
- data ParStmtBlock idL idR = ParStmtBlock [ExprLStmt idL] [idR] (SyntaxExpr idR)
- pprStmt :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => StmtLR idL idR body -> SDoc
- pprTransformStmt :: OutputableBndr id => [id] -> LHsExpr id -> Maybe (LHsExpr id) -> SDoc
- pprTransStmt :: Outputable body => Maybe body -> body -> TransForm -> SDoc
- pprBy :: Outputable body => Maybe body -> SDoc
- pprDo :: (OutputableBndr id, Outputable body) => HsStmtContext any -> [LStmt id body] -> SDoc
- ppr_do_stmts :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => [LStmtLR idL idR body] -> SDoc
- pprComp :: (OutputableBndr id, Outputable body) => [LStmt id body] -> SDoc
- pprQuals :: (OutputableBndr id, Outputable body) => [LStmt id body] -> SDoc
- data HsSplice id = HsSplice id (LHsExpr id)
- pprUntypedSplice :: OutputableBndr id => HsSplice id -> SDoc
- pprTypedSplice :: OutputableBndr id => HsSplice id -> SDoc
- pprSplice :: OutputableBndr id => Bool -> HsSplice id -> SDoc
- data HsBracket id
  - = ExpBr (LHsExpr id)
  - | PatBr (LPat id)
  - | DecBrL [LHsDecl id]
  - | DecBrG (HsGroup id)
  - | TypBr (LHsType id)
  - | VarBr Bool id
  - | TExpBr (LHsExpr id)
- isTypedBracket :: HsBracket id -> Bool
- pprHsBracket :: OutputableBndr id => HsBracket id -> SDoc
- thBrackets :: SDoc -> SDoc -> SDoc
- thTyBrackets :: SDoc -> SDoc
- data ArithSeqInfo id
  - = From (LHsExpr id)
  - | FromThen (LHsExpr id) (LHsExpr id)
  - | FromTo (LHsExpr id) (LHsExpr id)
  - | FromThenTo (LHsExpr id) (LHsExpr id) (LHsExpr id)
- pp_dotdot :: SDoc
- data HsMatchContext id
  - = FunRhs id Bool
  - | LambdaExpr
  - | CaseAlt
  - | IfAlt
  - | ProcExpr
  - | PatBindRhs
  - | RecUpd
  - | StmtCtxt (HsStmtContext id)
  - | ThPatSplice
  - | ThPatQuote
  - | PatSyn
- data HsStmtContext id
  - = ListComp
  - | MonadComp
  - | PArrComp
  - | DoExpr
  - | MDoExpr
  - | ArrowExpr
  - | GhciStmtCtxt
  - | PatGuard (HsMatchContext id)
  - | ParStmtCtxt (HsStmtContext id)
  - | TransStmtCtxt (HsStmtContext id)
- isListCompExpr :: HsStmtContext id -> Bool
- isMonadCompExpr :: HsStmtContext id -> Bool
- matchSeparator :: HsMatchContext id -> SDoc
- pprMatchContext :: Outputable id => HsMatchContext id -> SDoc
- pprMatchContextNoun :: Outputable id => HsMatchContext id -> SDoc
- pprAStmtContext :: Outputable id => HsStmtContext id -> SDoc
- pprStmtContext :: Outputable id => HsStmtContext id -> SDoc
- matchContextErrString :: Outputable id => HsMatchContext id -> SDoc
- pprMatchInCtxt :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> Match idR body -> SDoc
- pprStmtInCtxt :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsStmtContext idL -> StmtLR idL idR body -> SDoc

# Expressions proper

type LHsExpr id = Located (HsExpr id)

type PostTcExpr = HsExpr Id

PostTcExpr is an evidence expression attached to the syntax tree by the type checker (c.f. postTcType).

type PostTcTable = [(Name, PostTcExpr)]

We use a PostTcTable where there are a bunch of pieces of evidence, more than is convenient to keep individually.

noPostTcExpr :: PostTcExpr

noPostTcTable :: PostTcTable

type SyntaxExpr id = HsExpr id

SyntaxExpr is like `PostTcExpr`, but it's filled in a little earlier, by the renamer. It's used for rebindable syntax.

E.g. `(>>=)` is filled in before the renamer by the appropriate `Name` for `(>>=)`, and then instantiated by the type checker with its type args etc

noSyntaxExpr :: SyntaxExpr id

type CmdSyntaxTable id = [(Name, SyntaxExpr id)]

noSyntaxTable :: CmdSyntaxTable id

data HsExpr id

A Haskell expression.

Constructors

HsVar id | Variable
HsIPVar HsIPName | Implicit parameter
HsOverLit (HsOverLit id) | Overloaded literals
HsLit HsLit | Simple (non-overloaded) literals
HsLam (MatchGroup id (LHsExpr id)) | Lambda abstraction. Currently always a single match
HsLamCase PostTcType (MatchGroup id (LHsExpr id)) | Lambda-case
HsApp (LHsExpr id) (LHsExpr id) | Application
OpApp (LHsExpr id) (LHsExpr id) Fixity (LHsExpr id) | Operator applications: NB Bracketed ops such as (+) come out as Vars.
NegApp (LHsExpr id) (SyntaxExpr id) | Negation operator. Contains the negated expression and the name of `negate`
HsPar (LHsExpr id) | Parenthesised expr; see Note [Parens in HsSyn]
SectionL (LHsExpr id) (LHsExpr id) |
SectionR (LHsExpr id) (LHsExpr id) |
ExplicitTuple [HsTupArg id] Boxity | Used for explicit tuples and sections thereof
HsCase (LHsExpr id) (MatchGroup id (LHsExpr id)) |
HsIf (Maybe (SyntaxExpr id)) (LHsExpr id) (LHsExpr id) (LHsExpr id) |
HsMultiIf PostTcType [LGRHS id (LHsExpr id)] | Multi-way if
HsLet (HsLocalBinds id) (LHsExpr id) | let(rec)
HsDo (HsStmtContext Name) [ExprLStmt id] PostTcType |
ExplicitList PostTcType (Maybe (SyntaxExpr id)) [LHsExpr id] | Syntactic list: [a,b,c,...]
ExplicitPArr PostTcType [LHsExpr id] | Syntactic parallel array: [:e1, ..., en:]
RecordCon (Located id) PostTcExpr (HsRecordBinds id) | Record construction
RecordUpd (LHsExpr id) (HsRecordBinds id) [DataCon] [PostTcType] [PostTcType] | Record update
ExprWithTySig (LHsExpr id) (LHsType id) | Expression with an explicit type signature. `e :: type`
ExprWithTySigOut (LHsExpr id) (LHsType Name) |
ArithSeq PostTcExpr (Maybe (SyntaxExpr id)) (ArithSeqInfo id) | Arithmetic sequence
PArrSeq PostTcExpr (ArithSeqInfo id) | Arithmetic sequence for parallel array
HsSCC FastString (LHsExpr id) |
HsCoreAnn FastString (LHsExpr id) |
HsBracket (HsBracket id) |
HsRnBracketOut (HsBracket Name) [PendingRnSplice] |
HsTcBracketOut (HsBracket Name) [PendingTcSplice] |
HsSpliceE Bool (HsSplice id) |
HsQuasiQuoteE (HsQuasiQuote id) |
HsProc (LPat id) (LHsCmdTop id) | `proc` notation for Arrows
HsArrApp (LHsExpr id) (LHsExpr id) PostTcType HsArrAppType Bool |
HsArrForm (LHsExpr id) (Maybe Fixity) [LHsCmdTop id] |
HsTick (Tickish id) (LHsExpr id) |
HsBinTick Int Int (LHsExpr id) |
HsTickPragma (FastString, (Int, Int), (Int, Int)) (LHsExpr id) |
EWildPat |
EAsPat (Located id) (LHsExpr id) |
EViewPat (LHsExpr id) (LHsExpr id) |
ELazyPat (LHsExpr id) |
HsType (LHsType id) |
HsWrap HsWrapper (HsExpr id) |
HsUnboundVar RdrName |

Instances

Data id => Data (HsExpr id) |
OutputableBndr id => Outputable (HsExpr id) |
Typeable (* -> *) HsExpr |

data HsTupArg id

HsTupArg is used for tuple sections (,a,) is represented by ExplicitTuple [Mising ty1, Present a, Missing ty3] Which in turn stands for (x:ty1 y:ty2. (x,a,y))

Constructors

Present (LHsExpr id) | The argument
Missing PostTcType | The argument is missing, but this is its type

Instances

Data id => Data (HsTupArg id) |
Typeable (* -> *) HsTupArg |

tupArgPresent :: HsTupArg id -> Bool

data PendingRnSplice

Constructors

PendingRnExpSplice (HsSplice Name) |
PendingRnPatSplice (HsSplice Name) |
PendingRnTypeSplice (HsSplice Name) |
PendingRnDeclSplice (HsSplice Name) |
PendingRnCrossStageSplice Name |

Instances

Data PendingRnSplice |
Outputable PendingRnSplice |
Typeable * PendingRnSplice |

type PendingTcSplice = (Name, LHsExpr Id)

pprLExpr :: OutputableBndr id => LHsExpr id -> SDoc

pprExpr :: OutputableBndr id => HsExpr id -> SDoc

isQuietHsExpr :: HsExpr id -> Bool

pprBinds :: (OutputableBndr idL, OutputableBndr idR) => HsLocalBindsLR idL idR -> SDoc

ppr_lexpr :: OutputableBndr id => LHsExpr id -> SDoc

ppr_expr :: forall id. OutputableBndr id => HsExpr id -> SDoc

pprDebugParendExpr :: OutputableBndr id => LHsExpr id -> SDoc

pprParendExpr :: OutputableBndr id => LHsExpr id -> SDoc

hsExprNeedsParens :: HsExpr id -> Bool

isAtomicHsExpr :: HsExpr id -> Bool

type LHsCmd id = Located (HsCmd id)

data HsCmd id

Constructors

HsCmdArrApp (LHsExpr id) (LHsExpr id) PostTcType HsArrAppType Bool |
HsCmdArrForm (LHsExpr id) (Maybe Fixity) [LHsCmdTop id] |
HsCmdApp (LHsCmd id) (LHsExpr id) |
HsCmdLam (MatchGroup id (LHsCmd id)) |
HsCmdPar (LHsCmd id) |
HsCmdCase (LHsExpr id) (MatchGroup id (LHsCmd id)) |
HsCmdIf (Maybe (SyntaxExpr id)) (LHsExpr id) (LHsCmd id) (LHsCmd id) |
HsCmdLet (HsLocalBinds id) (LHsCmd id) |
HsCmdDo [CmdLStmt id] PostTcType |
HsCmdCast TcCoercion (HsCmd id) |

Instances

Data id => Data (HsCmd id) |
OutputableBndr id => Outputable (HsCmd id) |
Typeable (* -> *) HsCmd |

data HsArrAppType

Constructors

HsHigherOrderApp |
HsFirstOrderApp |

Instances

Data HsArrAppType |
Typeable * HsArrAppType |

type LHsCmdTop id = Located (HsCmdTop id)

data HsCmdTop id

Constructors

HsCmdTop (LHsCmd id) PostTcType PostTcType (CmdSyntaxTable id) |

Instances

Data id => Data (HsCmdTop id) |
OutputableBndr id => Outputable (HsCmdTop id) |
Typeable (* -> *) HsCmdTop |

pprLCmd :: OutputableBndr id => LHsCmd id -> SDoc

pprCmd :: OutputableBndr id => HsCmd id -> SDoc

isQuietHsCmd :: HsCmd id -> Bool

ppr_lcmd :: OutputableBndr id => LHsCmd id -> SDoc

ppr_cmd :: forall id. OutputableBndr id => HsCmd id -> SDoc

pprCmdArg :: OutputableBndr id => HsCmdTop id -> SDoc

type HsRecordBinds id = HsRecFields id (LHsExpr id)

data MatchGroup id body

Constructors

MG |
Fields mg_alts :: [LMatch id body] mg_arg_tys :: [PostTcType] mg_res_ty :: PostTcType

Instances

(Data id, Data body) => Data (MatchGroup id body) |
Typeable (* -> * -> *) MatchGroup |

type LMatch id body = Located (Match id body)

data Match id body

Constructors

Match [LPat id] (Maybe (LHsType id)) (GRHSs id body) |

Instances

(Data id, Data body) => Data (Match id body) |
Typeable (* -> * -> *) Match |

isEmptyMatchGroup :: MatchGroup id body -> Bool

matchGroupArity :: MatchGroup id body -> Arity

hsLMatchPats :: LMatch id body -> [LPat id]

data GRHSs id body

GRHSs are used both for pattern bindings and for Matches

Constructors

GRHSs |
Fields grhssGRHSs :: [LGRHS id body] Guarded RHSs grhssLocalBinds :: HsLocalBinds id The where clause

Instances

(Data id, Data body) => Data (GRHSs id body) |
Typeable (* -> * -> *) GRHSs |

type LGRHS id body = Located (GRHS id body)

data GRHS id body

Guarded Right Hand Side.

Constructors

GRHS [GuardLStmt id] body |

Instances

(Data id, Data body) => Data (GRHS id body) |
Typeable (* -> * -> *) GRHS |

pprMatches :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> MatchGroup idR body -> SDoc

pprFunBind :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => idL -> Bool -> MatchGroup idR body -> SDoc

pprPatBind :: forall bndr id body. (OutputableBndr bndr, OutputableBndr id, Outputable body) => LPat bndr -> GRHSs id body -> SDoc

pprMatch :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> Match idR body -> SDoc

pprGRHSs :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> GRHSs idR body -> SDoc

pprGRHS :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> GRHS idR body -> SDoc

pp_rhs :: Outputable body => HsMatchContext idL -> body -> SDoc

type LStmt id body = Located (StmtLR id id body)

type LStmtLR idL idR body = Located (StmtLR idL idR body)

type Stmt id body = StmtLR id id body

type CmdLStmt id = LStmt id (LHsCmd id)

type CmdStmt id = Stmt id (LHsCmd id)

type ExprLStmt id = LStmt id (LHsExpr id)

type ExprStmt id = Stmt id (LHsExpr id)

type GuardLStmt id = LStmt id (LHsExpr id)

type GuardStmt id = Stmt id (LHsExpr id)

type GhciLStmt id = LStmt id (LHsExpr id)

type GhciStmt id = Stmt id (LHsExpr id)

data StmtLR idL idR body

Constructors

LastStmt body (SyntaxExpr idR) |
BindStmt (LPat idL) body (SyntaxExpr idR) (SyntaxExpr idR) |
BodyStmt body (SyntaxExpr idR) (SyntaxExpr idR) PostTcType |
LetStmt (HsLocalBindsLR idL idR) |
ParStmt [ParStmtBlock idL idR] (SyntaxExpr idR) (SyntaxExpr idR) |
TransStmt |
Fields trS_form :: TransForm trS_stmts :: [ExprLStmt idL] trS_bndrs :: [(idR, idR)] trS_using :: LHsExpr idR trS_by :: Maybe (LHsExpr idR) trS_ret :: SyntaxExpr idR trS_bind :: SyntaxExpr idR trS_fmap :: SyntaxExpr idR
RecStmt |
Fields recS_stmts :: [LStmtLR idL idR body] recS_later_ids :: [idR] recS_rec_ids :: [idR] recS_bind_fn :: SyntaxExpr idR recS_ret_fn :: SyntaxExpr idR recS_mfix_fn :: SyntaxExpr idR recS_later_rets :: [PostTcExpr] recS_rec_rets :: [PostTcExpr] recS_ret_ty :: PostTcType

Instances

Typeable (* -> * -> * -> *) StmtLR |
(Data idL, Data idR, Data body) => Data (StmtLR idL idR body) |
(OutputableBndr idL, OutputableBndr idR, Outputable body) => Outputable (StmtLR idL idR body) |

data TransForm

Constructors

ThenForm |
GroupForm |

Instances

Data TransForm |
Typeable * TransForm |

data ParStmtBlock idL idR

Constructors

ParStmtBlock [ExprLStmt idL] [idR] (SyntaxExpr idR) |

Instances

(Data idL, Data idR) => Data (ParStmtBlock idL idR) |
(OutputableBndr idL, OutputableBndr idR) => Outputable (ParStmtBlock idL idR) |
Typeable (* -> * -> *) ParStmtBlock |

pprStmt :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => StmtLR idL idR body -> SDoc

pprTransformStmt :: OutputableBndr id => [id] -> LHsExpr id -> Maybe (LHsExpr id) -> SDoc

pprTransStmt :: Outputable body => Maybe body -> body -> TransForm -> SDoc

pprBy :: Outputable body => Maybe body -> SDoc

pprDo :: (OutputableBndr id, Outputable body) => HsStmtContext any -> [LStmt id body] -> SDoc

ppr_do_stmts :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => [LStmtLR idL idR body] -> SDoc

pprComp :: (OutputableBndr id, Outputable body) => [LStmt id body] -> SDoc

pprQuals :: (OutputableBndr id, Outputable body) => [LStmt id body] -> SDoc

data HsSplice id

Constructors

HsSplice id (LHsExpr id) |

Instances

Data id => Data (HsSplice id) |
OutputableBndr id => Outputable (HsSplice id) |
Typeable (* -> *) HsSplice |

pprUntypedSplice :: OutputableBndr id => HsSplice id -> SDoc

pprTypedSplice :: OutputableBndr id => HsSplice id -> SDoc

pprSplice :: OutputableBndr id => Bool -> HsSplice id -> SDoc

data HsBracket id

Constructors

ExpBr (LHsExpr id) |
PatBr (LPat id) |
DecBrL [LHsDecl id] |
DecBrG (HsGroup id) |
TypBr (LHsType id) |
VarBr Bool id |
TExpBr (LHsExpr id) |

Instances

Data id => Data (HsBracket id) |
OutputableBndr id => Outputable (HsBracket id) |
Typeable (* -> *) HsBracket |

isTypedBracket :: HsBracket id -> Bool

pprHsBracket :: OutputableBndr id => HsBracket id -> SDoc

thBrackets :: SDoc -> SDoc -> SDoc

thTyBrackets :: SDoc -> SDoc

data ArithSeqInfo id

Constructors

From (LHsExpr id) |
FromThen (LHsExpr id) (LHsExpr id) |
FromTo (LHsExpr id) (LHsExpr id) |
FromThenTo (LHsExpr id) (LHsExpr id) (LHsExpr id) |

Instances

Data id => Data (ArithSeqInfo id) |
OutputableBndr id => Outputable (ArithSeqInfo id) |
Typeable (* -> *) ArithSeqInfo |

pp_dotdot :: SDoc

data HsMatchContext id

Constructors

FunRhs id Bool |
LambdaExpr |
CaseAlt |
IfAlt |
ProcExpr |
PatBindRhs |
RecUpd |
StmtCtxt (HsStmtContext id) |
ThPatSplice |
ThPatQuote |
PatSyn |

Instances

Data id => Data (HsMatchContext id) |
Typeable (* -> *) HsMatchContext |

data HsStmtContext id

Constructors

ListComp |
MonadComp |
PArrComp |
DoExpr |
MDoExpr |
ArrowExpr |
GhciStmtCtxt |
PatGuard (HsMatchContext id) |
ParStmtCtxt (HsStmtContext id) |
TransStmtCtxt (HsStmtContext id) |

Instances

Data id => Data (HsStmtContext id) |
Typeable (* -> *) HsStmtContext |

isListCompExpr :: HsStmtContext id -> Bool

isMonadCompExpr :: HsStmtContext id -> Bool

matchSeparator :: HsMatchContext id -> SDoc

pprMatchContext :: Outputable id => HsMatchContext id -> SDoc

pprMatchContextNoun :: Outputable id => HsMatchContext id -> SDoc

pprAStmtContext :: Outputable id => HsStmtContext id -> SDoc

pprStmtContext :: Outputable id => HsStmtContext id -> SDoc

matchContextErrString :: Outputable id => HsMatchContext id -> SDoc

pprMatchInCtxt :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> Match idR body -> SDoc

pprStmtInCtxt :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsStmtContext idL -> StmtLR idL idR body -> SDoc