Safe Haskell | None |
---|---|
Language | Haskell2010 |
- type HsLocalBinds id = HsLocalBindsLR id id
- type LHsLocalBinds id = Located (HsLocalBinds id)
- data HsLocalBindsLR idL idR
- = HsValBinds (HsValBindsLR idL idR)
- | HsIPBinds (HsIPBinds idR)
- | EmptyLocalBinds
- type LHsLocalBindsLR idL idR = Located (HsLocalBindsLR idL idR)
- type HsValBinds id = HsValBindsLR id id
- data HsValBindsLR idL idR
- = ValBindsIn (LHsBindsLR idL idR) [LSig idR]
- | ValBindsOut [(RecFlag, LHsBinds idL)] [LSig Name]
- type LHsBind id = LHsBindLR id id
- type LHsBinds id = LHsBindsLR id id
- type HsBind id = HsBindLR id id
- type LHsBindsLR idL idR = Bag (LHsBindLR idL idR)
- type LHsBindLR idL idR = Located (HsBindLR idL idR)
- data HsBindLR idL idR
- = FunBind { }
- | PatBind { }
- | VarBind {
- var_id :: idL
- var_rhs :: LHsExpr idR
- var_inline :: Bool
- | AbsBinds {
- abs_tvs :: [TyVar]
- abs_ev_vars :: [EvVar]
- abs_exports :: [ABExport idL]
- abs_ev_binds :: [TcEvBinds]
- abs_binds :: LHsBinds idL
- | AbsBindsSig {
- abs_tvs :: [TyVar]
- abs_ev_vars :: [EvVar]
- abs_sig_export :: idL
- abs_sig_prags :: TcSpecPrags
- abs_sig_ev_bind :: TcEvBinds
- abs_sig_bind :: LHsBind idL
- | PatSynBind (PatSynBind idL idR)
- data ABExport id = ABE {}
- data PatSynBind idL idR = PSB {}
- pprLHsBinds :: (OutputableBndrId idL, OutputableBndrId idR) => LHsBindsLR idL idR -> SDoc
- pprLHsBindsForUser :: (OutputableBndrId idL, OutputableBndrId idR, OutputableBndrId id2) => LHsBindsLR idL idR -> [LSig id2] -> [SDoc]
- pprDeclList :: [SDoc] -> SDoc
- emptyLocalBinds :: HsLocalBindsLR a b
- isEmptyLocalBinds :: HsLocalBindsLR a b -> Bool
- eqEmptyLocalBinds :: HsLocalBindsLR a b -> Bool
- isEmptyValBinds :: HsValBindsLR a b -> Bool
- emptyValBindsIn :: HsValBindsLR a b
- emptyValBindsOut :: HsValBindsLR a b
- emptyLHsBinds :: LHsBindsLR idL idR
- isEmptyLHsBinds :: LHsBindsLR idL idR -> Bool
- plusHsValBinds :: HsValBinds a -> HsValBinds a -> HsValBinds a
- ppr_monobind :: (OutputableBndrId idL, OutputableBndrId idR) => HsBindLR idL idR -> SDoc
- pprTicks :: SDoc -> SDoc -> SDoc
- data HsIPBinds id = IPBinds [LIPBind id] TcEvBinds
- isEmptyIPBinds :: HsIPBinds id -> Bool
- type LIPBind id = Located (IPBind id)
- data IPBind id = IPBind (Either (Located HsIPName) id) (LHsExpr id)
- type LSig name = Located (Sig name)
- data Sig name
- = TypeSig [Located name] (LHsSigWcType name)
- | PatSynSig [Located name] (LHsSigType name)
- | ClassOpSig Bool [Located name] (LHsSigType name)
- | IdSig Id
- | FixSig (FixitySig name)
- | InlineSig (Located name) InlinePragma
- | SpecSig (Located name) [LHsSigType name] InlinePragma
- | SpecInstSig SourceText (LHsSigType name)
- | MinimalSig SourceText (LBooleanFormula (Located name))
- | SCCFunSig SourceText (Located name) (Maybe (Located StringLiteral))
- | CompleteMatchSig SourceText (Located [Located name]) (Maybe (Located name))
- type LFixitySig name = Located (FixitySig name)
- data FixitySig name = FixitySig [Located name] Fixity
- data TcSpecPrags
- type LTcSpecPrag = Located TcSpecPrag
- data TcSpecPrag = SpecPrag Id HsWrapper InlinePragma
- noSpecPrags :: TcSpecPrags
- hasSpecPrags :: TcSpecPrags -> Bool
- isDefaultMethod :: TcSpecPrags -> Bool
- isFixityLSig :: LSig name -> Bool
- isTypeLSig :: LSig name -> Bool
- isSpecLSig :: LSig name -> Bool
- isSpecInstLSig :: LSig name -> Bool
- isPragLSig :: LSig name -> Bool
- isInlineLSig :: LSig name -> Bool
- isMinimalLSig :: LSig name -> Bool
- isSCCFunSig :: LSig name -> Bool
- isCompleteMatchSig :: LSig name -> Bool
- hsSigDoc :: Sig name -> SDoc
- ppr_sig :: OutputableBndrId name => Sig name -> SDoc
- pragBrackets :: SDoc -> SDoc
- pragSrcBrackets :: SourceText -> String -> SDoc -> SDoc
- pprVarSig :: OutputableBndr id => [id] -> SDoc -> SDoc
- pprSpec :: OutputableBndr id => id -> SDoc -> InlinePragma -> SDoc
- pprTcSpecPrags :: TcSpecPrags -> SDoc
- pprMinimalSig :: OutputableBndr name => LBooleanFormula (Located name) -> SDoc
- data HsPatSynDetails a
- = InfixPatSyn a a
- | PrefixPatSyn [a]
- | RecordPatSyn [RecordPatSynField a]
- data RecordPatSynField a = RecordPatSynField {
- recordPatSynSelectorId :: a
- recordPatSynPatVar :: a
- data HsPatSynDir id
Documentation
type HsLocalBinds id = HsLocalBindsLR id id Source #
Haskell Local Bindings
type LHsLocalBinds id = Located (HsLocalBinds id) Source #
Located Haskell local bindings
data HsLocalBindsLR idL idR Source #
Haskell Local Bindings with separate Left and Right identifier types
Bindings in a 'let' expression or a 'where' clause
HsValBinds (HsValBindsLR idL idR) | Haskell Value Bindings |
HsIPBinds (HsIPBinds idR) | Haskell Implicit Parameter Bindings |
EmptyLocalBinds | Empty Local Bindings |
(DataId idL, DataId idR) => Data (HsLocalBindsLR idL idR) # | |
(OutputableBndrId idL, OutputableBndrId idR) => Outputable (HsLocalBindsLR idL idR) # | |
type LHsLocalBindsLR idL idR = Located (HsLocalBindsLR idL idR) Source #
type HsValBinds id = HsValBindsLR id id Source #
Haskell Value Bindings
data HsValBindsLR idL idR Source #
Haskell Value bindings with separate Left and Right identifier types (not implicit parameters) Used for both top level and nested bindings May contain pattern synonym bindings
ValBindsIn (LHsBindsLR idL idR) [LSig idR] | Value Bindings In Before renaming RHS; idR is always RdrName Not dependency analysed Recursive by default |
ValBindsOut [(RecFlag, LHsBinds idL)] [LSig Name] | Value Bindings Out After renaming RHS; idR can be Name or Id Dependency analysed, later bindings in the list may depend on earlier ones. |
(DataId idL, DataId idR) => Data (HsValBindsLR idL idR) # | |
(OutputableBndrId idL, OutputableBndrId idR) => Outputable (HsValBindsLR idL idR) # | |
type LHsBinds id = LHsBindsLR id id Source #
Located Haskell Bindings
type LHsBindsLR idL idR = Bag (LHsBindLR idL idR) Source #
Located Haskell Bindings with separate Left and Right identifier types
type LHsBindLR idL idR = Located (HsBindLR idL idR) Source #
Located Haskell Binding with separate Left and Right identifier types
data HsBindLR idL idR Source #
Haskell Binding with separate Left and Right id's
FunBind | Function-like Binding FunBind is used for both functions Reason 1: Special case for type inference: see Reason 2: Instance decls can only have FunBinds, which is convenient. If you change this, you'll need to change e.g. rnMethodBinds But note that the form Strict bindings have their strictness recorded in the |
| |
PatBind | Pattern Binding The pattern is never a simple variable; That case is done by FunBind. See Note [Varieties of binding pattern matches] for details about the relationship between FunBind and PatBind. |
| |
VarBind | Variable Binding Dictionary binding and suchlike. All VarBinds are introduced by the type checker |
AbsBinds | Abstraction Bindings |
| |
AbsBindsSig | Abstraction Bindings Signature |
| |
PatSynBind (PatSynBind idL idR) |
|
(DataId idL, DataId idR) => Data (HsBindLR idL idR) # | |
(OutputableBndrId idL, OutputableBndrId idR) => Outputable (HsBindLR idL idR) # | |
Abtraction Bindings Export
Data id => Data (ABExport id) # | |
OutputableBndr id => Outputable (ABExport id) # | |
data PatSynBind idL idR Source #
AnnKeywordId
:AnnPattern
,AnnEqual
,AnnLarrow
AnnWhere
,AnnOpen
'{'
,AnnClose
'}'
,
Pattern Synonym binding
(DataId idL, DataId idR) => Data (PatSynBind idL idR) # | |
(OutputableBndr idL, OutputableBndrId idR) => Outputable (PatSynBind idL idR) # | |
pprLHsBinds :: (OutputableBndrId idL, OutputableBndrId idR) => LHsBindsLR idL idR -> SDoc Source #
pprLHsBindsForUser :: (OutputableBndrId idL, OutputableBndrId idR, OutputableBndrId id2) => LHsBindsLR idL idR -> [LSig id2] -> [SDoc] Source #
pprDeclList :: [SDoc] -> SDoc Source #
emptyLocalBinds :: HsLocalBindsLR a b Source #
isEmptyLocalBinds :: HsLocalBindsLR a b -> Bool Source #
eqEmptyLocalBinds :: HsLocalBindsLR a b -> Bool Source #
isEmptyValBinds :: HsValBindsLR a b -> Bool Source #
emptyValBindsIn :: HsValBindsLR a b Source #
emptyValBindsOut :: HsValBindsLR a b Source #
emptyLHsBinds :: LHsBindsLR idL idR Source #
isEmptyLHsBinds :: LHsBindsLR idL idR -> Bool Source #
plusHsValBinds :: HsValBinds a -> HsValBinds a -> HsValBinds a Source #
ppr_monobind :: (OutputableBndrId idL, OutputableBndrId idR) => HsBindLR idL idR -> SDoc Source #
Haskell Implicit Parameter Bindings
DataId id => Data (HsIPBinds id) # | |
OutputableBndrId id => Outputable (HsIPBinds id) # | |
isEmptyIPBinds :: HsIPBinds id -> Bool Source #
type LIPBind id = Located (IPBind id) Source #
Located Implicit Parameter Binding
May have AnnKeywordId
: AnnSemi
when in a
list
Implicit parameter bindings.
These bindings start off as (Left "x") in the parser and stay that way until after type-checking when they are replaced with (Right d), where "d" is the name of the dictionary holding the evidence for the implicit parameter.
DataId name => Data (IPBind name) # | |
OutputableBndrId id => Outputable (IPBind id) # | |
Signatures and pragmas
TypeSig [Located name] (LHsSigWcType name) | An ordinary type signature f :: Num a => a -> a After renaming, this list of Names contains the named and unnamed
wildcards brought into scope by this signature. For a signature
|
PatSynSig [Located name] (LHsSigType name) | A pattern synonym type signature pattern Single :: () => (Show a) => a -> [a] |
ClassOpSig Bool [Located name] (LHsSigType name) | A signature for a class method False: ordinary class-method signature True: generic-default class method signature e.g. class C a where op :: a -> a -- Ordinary default op :: Eq a => a -> a -- Generic default No wildcards allowed here |
IdSig Id | A type signature in generated code, notably the code generated for record selectors. We simply record the desired Id itself, replete with its name, type and IdDetails. Otherwise it's just like a type signature: there should be an accompanying binding |
FixSig (FixitySig name) | An ordinary fixity declaration infixl 8 *** |
InlineSig (Located name) InlinePragma | An inline pragma {#- INLINE f #-} |
SpecSig (Located name) [LHsSigType name] InlinePragma | A specialisation pragma {-# SPECIALISE f :: Int -> Int #-} |
SpecInstSig SourceText (LHsSigType name) | A specialisation pragma for instance declarations only {-# SPECIALISE instance Eq [Int] #-} (Class tys); should be a specialisation of the current instance declaration |
MinimalSig SourceText (LBooleanFormula (Located name)) | A minimal complete definition pragma {-# MINIMAL a | (b, c | (d | e)) #-} |
SCCFunSig SourceText (Located name) (Maybe (Located StringLiteral)) | A "set cost centre" pragma for declarations {-# SCC funName #-} or {-# SCC funName "cost_centre_name" #-} |
CompleteMatchSig SourceText (Located [Located name]) (Maybe (Located name)) | A complete match pragma {-# COMPLETE C, D [:: T] #-} Used to inform the pattern match checker about additional complete matchings which, for example, arise from pattern synonym definitions. |
DataId name => Data (Sig name) # | |
OutputableBndrId name => Outputable (Sig name) # | |
type LFixitySig name = Located (FixitySig name) Source #
Located Fixity Signature
Fixity Signature
Data name => Data (FixitySig name) # | |
OutputableBndr name => Outputable (FixitySig name) # | |
data TcSpecPrags Source #
Type checker Specialisation Pragmas
TcSpecPrags
conveys SPECIALISE
pragmas from the type checker to the desugarer
IsDefaultMethod | Super-specialised: a default method should be macro-expanded at every call site |
SpecPrags [LTcSpecPrag] |
type LTcSpecPrag = Located TcSpecPrag Source #
Located Type checker Specification Pragmas
data TcSpecPrag Source #
Type checker Specification Pragma
SpecPrag Id HsWrapper InlinePragma | The Id to be specialised, an wrapper that specialises the polymorphic function, and inlining spec for the specialised function |
hasSpecPrags :: TcSpecPrags -> Bool Source #
isDefaultMethod :: TcSpecPrags -> Bool Source #
isFixityLSig :: LSig name -> Bool Source #
isTypeLSig :: LSig name -> Bool Source #
isSpecLSig :: LSig name -> Bool Source #
isSpecInstLSig :: LSig name -> Bool Source #
isPragLSig :: LSig name -> Bool Source #
isInlineLSig :: LSig name -> Bool Source #
isMinimalLSig :: LSig name -> Bool Source #
isSCCFunSig :: LSig name -> Bool Source #
isCompleteMatchSig :: LSig name -> Bool Source #
pragBrackets :: SDoc -> SDoc Source #
pragSrcBrackets :: SourceText -> String -> SDoc -> SDoc Source #
Using SourceText in case the pragma was spelled differently or used mixed case
pprSpec :: OutputableBndr id => id -> SDoc -> InlinePragma -> SDoc Source #
pprTcSpecPrags :: TcSpecPrags -> SDoc Source #
pprMinimalSig :: OutputableBndr name => LBooleanFormula (Located name) -> SDoc Source #
data HsPatSynDetails a Source #
Haskell Pattern Synonym Details
InfixPatSyn a a | Infix Pattern Synonym |
PrefixPatSyn [a] | Prefix Pattern Synonym |
RecordPatSyn [RecordPatSynField a] | Record Pattern Synonym |
data RecordPatSynField a Source #
Record Pattern Synonym Field