ghc-6.12.1: The GHC APIContentsIndex
HsExpr
Contents
Expressions proper
Description
Abstract Haskell syntax for expressions.
Synopsis
type LHsExpr id = Located (HsExpr id)
type PostTcExpr = HsExpr Id
type PostTcTable = [(Name, Id)]
noPostTcExpr :: PostTcExpr
noPostTcTable :: PostTcTable
type SyntaxExpr id = HsExpr id
noSyntaxExpr :: SyntaxExpr id
type SyntaxTable id = [(Name, SyntaxExpr id)]
noSyntaxTable :: SyntaxTable id
data HsExpr id
= HsVar id
| HsIPVar (IPName id)
| HsOverLit (HsOverLit id)
| HsLit HsLit
| HsLam (MatchGroup 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)
| HsIf (LHsExpr id) (LHsExpr id) (LHsExpr id)
| HsLet (HsLocalBinds id) (LHsExpr id)
| HsDo (HsStmtContext Name) [LStmt id] (LHsExpr id) PostTcType
| ExplicitList PostTcType [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 (ArithSeqInfo id)
| PArrSeq PostTcExpr (ArithSeqInfo id)
| HsSCC FastString (LHsExpr id)
| HsCoreAnn FastString (LHsExpr id)
| HsBracket (HsBracket id)
| HsBracketOut (HsBracket Name) [PendingSplice]
| HsSpliceE (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 Int [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)
data HsTupArg id
= Present (LHsExpr id)
| Missing PostTcType
tupArgPresent :: HsTupArg id -> Bool
type PendingSplice = (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 :: OutputableBndr id => HsExpr id -> SDoc
pprCmdArg :: OutputableBndr id => HsCmdTop id -> SDoc
pa_brackets :: SDoc -> SDoc
pprDebugParendExpr :: OutputableBndr id => LHsExpr id -> SDoc
pprParendExpr :: OutputableBndr id => LHsExpr id -> SDoc
isAtomicHsExpr :: HsExpr id -> Bool
type HsCmd id = HsExpr id
type LHsCmd id = LHsExpr id
data HsArrAppType
= HsHigherOrderApp
| HsFirstOrderApp
type LHsCmdTop id = Located (HsCmdTop id)
data HsCmdTop id = HsCmdTop (LHsCmd id) [PostTcType] PostTcType (SyntaxTable id)
type HsRecordBinds id = HsRecFields id (LHsExpr id)
data MatchGroup id = MatchGroup [LMatch id] PostTcType
type LMatch id = Located (Match id)
data Match id = Match [LPat id] (Maybe (LHsType id)) (GRHSs id)
isEmptyMatchGroup :: MatchGroup id -> Bool
matchGroupArity :: MatchGroup id -> Arity
hsLMatchPats :: LMatch id -> [LPat id]
data GRHSs id = GRHSs {
grhssGRHSs :: [LGRHS id]
grhssLocalBinds :: HsLocalBinds id
}
type LGRHS id = Located (GRHS id)
data GRHS id = GRHS [LStmt id] (LHsExpr id)
pprMatches :: (OutputableBndr idL, OutputableBndr idR) => HsMatchContext idL -> MatchGroup idR -> SDoc
pprFunBind :: (OutputableBndr idL, OutputableBndr idR) => idL -> Bool -> MatchGroup idR -> SDoc
pprPatBind :: (OutputableBndr bndr, OutputableBndr id) => LPat bndr -> GRHSs id -> SDoc
pprMatch :: (OutputableBndr idL, OutputableBndr idR) => HsMatchContext idL -> Match idR -> SDoc
pprGRHSs :: (OutputableBndr idL, OutputableBndr idR) => HsMatchContext idL -> GRHSs idR -> SDoc
pprGRHS :: (OutputableBndr idL, OutputableBndr idR) => HsMatchContext idL -> GRHS idR -> SDoc
pp_rhs :: OutputableBndr idR => HsMatchContext idL -> LHsExpr idR -> SDoc
type LStmt id = Located (StmtLR id id)
type LStmtLR idL idR = Located (StmtLR idL idR)
type Stmt id = StmtLR id id
data GroupByClause id
= GroupByNothing (LHsExpr id)
| GroupBySomething (Either (LHsExpr id) (SyntaxExpr id)) (LHsExpr id)
data StmtLR idL idR
= BindStmt (LPat idL) (LHsExpr idR) (SyntaxExpr idR) (SyntaxExpr idR)
| ExprStmt (LHsExpr idR) (SyntaxExpr idR) PostTcType
| LetStmt (HsLocalBindsLR idL idR)
| ParStmt [([LStmt idL], [idR])]
| TransformStmt ([LStmt idL], [idR]) (LHsExpr idR) (Maybe (LHsExpr idR))
| GroupStmt ([LStmt idL], [(idR, idR)]) (GroupByClause idR)
| RecStmt {
recS_stmts :: [LStmtLR idL idR]
recS_later_ids :: [idR]
recS_rec_ids :: [idR]
recS_bind_fn :: SyntaxExpr idR
recS_ret_fn :: SyntaxExpr idR
recS_mfix_fn :: SyntaxExpr idR
recS_rec_rets :: [PostTcExpr]
recS_dicts :: DictBinds idR
}
pprStmt :: (OutputableBndr idL, OutputableBndr idR) => StmtLR idL idR -> SDoc
pprGroupByClause :: OutputableBndr id => GroupByClause id -> SDoc
pprDo :: OutputableBndr id => HsStmtContext any -> [LStmt id] -> LHsExpr id -> SDoc
ppr_do_stmts :: OutputableBndr id => [LStmt id] -> LHsExpr id -> SDoc
pprComp :: OutputableBndr id => (SDoc -> SDoc) -> [LStmt id] -> LHsExpr id -> SDoc
data HsSplice id = HsSplice id (LHsExpr id)
pprSplice :: OutputableBndr id => HsSplice id -> SDoc
data HsBracket id
= ExpBr (LHsExpr id)
| PatBr (LPat id)
| DecBr (HsGroup id)
| TypBr (LHsType id)
| VarBr id
pprHsBracket :: OutputableBndr id => HsBracket id -> SDoc
thBrackets :: SDoc -> 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
| CaseAlt
| LambdaExpr
| ProcExpr
| PatBindRhs
| RecUpd
| StmtCtxt (HsStmtContext id)
data HsStmtContext id
= ListComp
| DoExpr
| MDoExpr PostTcTable
| PArrComp
| PatGuard (HsMatchContext id)
| ParStmtCtxt (HsStmtContext id)
| TransformStmtCtxt (HsStmtContext id)
isDoExpr :: HsStmtContext id -> Bool
isListCompExpr :: HsStmtContext id -> Bool
matchSeparator :: HsMatchContext id -> SDoc
pprMatchContext :: Outputable id => HsMatchContext id -> SDoc
pprStmtContext :: Outputable id => HsStmtContext id -> SDoc
matchContextErrString :: Outputable id => HsMatchContext id -> SDoc
pprMatchInCtxt :: (OutputableBndr idL, OutputableBndr idR) => HsMatchContext idL -> Match idR -> SDoc
pprStmtInCtxt :: (OutputableBndr idL, OutputableBndr idR) => HsStmtContext idL -> StmtLR idL idR -> 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, Id)]
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 tec

noSyntaxExpr :: SyntaxExpr id
type SyntaxTable id = [(Name, SyntaxExpr id)]

Currently used only for CmdTop (sigh)

  • Before the renamer, this list is noSyntaxTable
  • After the renamer, it takes the form [(std_name, HsVar actual_name)] For example, for the return op of a monad
  • normal case: (GHC.Base.return, HsVar GHC.Base.return)
  • with rebindable syntax: (GHC.Base.return, return_22) where return_22 is whatever return is in scope
  • After the type checker, it takes the form [(std_name, expression)] where expression is the evidence for the method
noSyntaxTable :: SyntaxTable id
data HsExpr id
A Haskell expression.
Constructors
HsVar idvariable
HsIPVar (IPName id)implicit parameter
HsOverLit (HsOverLit id)Overloaded literals
HsLit HsLitSimple (non-overloaded) literals
HsLam (MatchGroup 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)
HsIf (LHsExpr id) (LHsExpr id) (LHsExpr id)
HsLet (HsLocalBinds id) (LHsExpr id)
HsDo (HsStmtContext Name) [LStmt id] (LHsExpr id) PostTcType
ExplicitList PostTcType [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 (ArithSeqInfo id)
PArrSeq PostTcExpr (ArithSeqInfo id)
HsSCC FastString (LHsExpr id)
HsCoreAnn FastString (LHsExpr id)
HsBracket (HsBracket id)
HsBracketOut (HsBracket Name) [PendingSplice]
HsSpliceE (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 Int [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)
data HsTupArg id
Constructors
Present (LHsExpr id)
Missing PostTcType
tupArgPresent :: HsTupArg id -> Bool
type PendingSplice = (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 :: OutputableBndr id => HsExpr id -> SDoc
pprCmdArg :: OutputableBndr id => HsCmdTop id -> SDoc
pa_brackets :: SDoc -> SDoc
pprDebugParendExpr :: OutputableBndr id => LHsExpr id -> SDoc
pprParendExpr :: OutputableBndr id => LHsExpr id -> SDoc
isAtomicHsExpr :: HsExpr id -> Bool
type HsCmd id = HsExpr id
type LHsCmd id = LHsExpr id
data HsArrAppType
Constructors
HsHigherOrderApp
HsFirstOrderApp
type LHsCmdTop id = Located (HsCmdTop id)
data HsCmdTop id
Constructors
HsCmdTop (LHsCmd id) [PostTcType] PostTcType (SyntaxTable id)
type HsRecordBinds id = HsRecFields id (LHsExpr id)
data MatchGroup id
Constructors
MatchGroup [LMatch id] PostTcType
type LMatch id = Located (Match id)
data Match id
Constructors
Match [LPat id] (Maybe (LHsType id)) (GRHSs id)
isEmptyMatchGroup :: MatchGroup id -> Bool
matchGroupArity :: MatchGroup id -> Arity
hsLMatchPats :: LMatch id -> [LPat id]
data GRHSs id
GRHSs are used both for pattern bindings and for Matches
Constructors
GRHSs
grhssGRHSs :: [LGRHS id]Guarded RHSs
grhssLocalBinds :: HsLocalBinds idThe where clause
type LGRHS id = Located (GRHS id)
data GRHS id
Guarded Right Hand Side.
Constructors
GRHS [LStmt id] (LHsExpr id)
pprMatches :: (OutputableBndr idL, OutputableBndr idR) => HsMatchContext idL -> MatchGroup idR -> SDoc
pprFunBind :: (OutputableBndr idL, OutputableBndr idR) => idL -> Bool -> MatchGroup idR -> SDoc
pprPatBind :: (OutputableBndr bndr, OutputableBndr id) => LPat bndr -> GRHSs id -> SDoc
pprMatch :: (OutputableBndr idL, OutputableBndr idR) => HsMatchContext idL -> Match idR -> SDoc
pprGRHSs :: (OutputableBndr idL, OutputableBndr idR) => HsMatchContext idL -> GRHSs idR -> SDoc
pprGRHS :: (OutputableBndr idL, OutputableBndr idR) => HsMatchContext idL -> GRHS idR -> SDoc
pp_rhs :: OutputableBndr idR => HsMatchContext idL -> LHsExpr idR -> SDoc
type LStmt id = Located (StmtLR id id)
type LStmtLR idL idR = Located (StmtLR idL idR)
type Stmt id = StmtLR id id
data GroupByClause id
Constructors
GroupByNothing (LHsExpr id)
GroupBySomething (Either (LHsExpr id) (SyntaxExpr id)) (LHsExpr id)
data StmtLR idL idR
Constructors
BindStmt (LPat idL) (LHsExpr idR) (SyntaxExpr idR) (SyntaxExpr idR)
ExprStmt (LHsExpr idR) (SyntaxExpr idR) PostTcType
LetStmt (HsLocalBindsLR idL idR)
ParStmt [([LStmt idL], [idR])]
TransformStmt ([LStmt idL], [idR]) (LHsExpr idR) (Maybe (LHsExpr idR))
GroupStmt ([LStmt idL], [(idR, idR)]) (GroupByClause idR)
RecStmt
recS_stmts :: [LStmtLR idL idR]
recS_later_ids :: [idR]
recS_rec_ids :: [idR]
recS_bind_fn :: SyntaxExpr idR
recS_ret_fn :: SyntaxExpr idR
recS_mfix_fn :: SyntaxExpr idR
recS_rec_rets :: [PostTcExpr]
recS_dicts :: DictBinds idR
pprStmt :: (OutputableBndr idL, OutputableBndr idR) => StmtLR idL idR -> SDoc
pprGroupByClause :: OutputableBndr id => GroupByClause id -> SDoc
pprDo :: OutputableBndr id => HsStmtContext any -> [LStmt id] -> LHsExpr id -> SDoc
ppr_do_stmts :: OutputableBndr id => [LStmt id] -> LHsExpr id -> SDoc
pprComp :: OutputableBndr id => (SDoc -> SDoc) -> [LStmt id] -> LHsExpr id -> SDoc
data HsSplice id
Constructors
HsSplice id (LHsExpr id)
pprSplice :: OutputableBndr id => HsSplice id -> SDoc
data HsBracket id
Constructors
ExpBr (LHsExpr id)
PatBr (LPat id)
DecBr (HsGroup id)
TypBr (LHsType id)
VarBr id
pprHsBracket :: OutputableBndr id => HsBracket id -> SDoc
thBrackets :: SDoc -> 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)
pp_dotdot :: SDoc
data HsMatchContext id
Constructors
FunRhs id Bool
CaseAlt
LambdaExpr
ProcExpr
PatBindRhs
RecUpd
StmtCtxt (HsStmtContext id)
data HsStmtContext id
Constructors
ListComp
DoExpr
MDoExpr PostTcTable
PArrComp
PatGuard (HsMatchContext id)
ParStmtCtxt (HsStmtContext id)
TransformStmtCtxt (HsStmtContext id)
isDoExpr :: HsStmtContext id -> Bool
isListCompExpr :: HsStmtContext id -> Bool
matchSeparator :: HsMatchContext id -> SDoc
pprMatchContext :: Outputable id => HsMatchContext id -> SDoc
pprStmtContext :: Outputable id => HsStmtContext id -> SDoc
matchContextErrString :: Outputable id => HsMatchContext id -> SDoc
pprMatchInCtxt :: (OutputableBndr idL, OutputableBndr idR) => HsMatchContext idL -> Match idR -> SDoc
pprStmtInCtxt :: (OutputableBndr idL, OutputableBndr idR) => HsStmtContext idL -> StmtLR idL idR -> SDoc
Produced by Haddock version 2.6.0