Safe Haskell | None |
---|---|
Language | Haskell98 |
- type HsLocalBinds id = HsLocalBindsLR id id
- data HsLocalBindsLR idL idR
- = HsValBinds (HsValBindsLR idL idR)
- | HsIPBinds (HsIPBinds idR)
- | EmptyLocalBinds
- 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 (Origin, 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
- | PatSynBind {
- patsyn_id :: Located idL
- bind_fvs :: NameSet
- patsyn_args :: HsPatSynDetails (Located idR)
- patsyn_def :: LPat idR
- patsyn_dir :: HsPatSynDir idR
- data ABExport id = ABE {}
- placeHolderNames :: NameSet
- pprLHsBinds :: (OutputableBndr idL, OutputableBndr idR) => LHsBindsLR idL idR -> SDoc
- pprLHsBindsForUser :: (OutputableBndr idL, OutputableBndr idR, OutputableBndr id2) => LHsBindsLR idL idR -> [LSig id2] -> [SDoc]
- pprDeclList :: [SDoc] -> SDoc
- emptyLocalBinds :: HsLocalBindsLR a b
- isEmptyLocalBinds :: 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
- getTypeSigNames :: HsValBinds a -> NameSet
- ppr_monobind :: (OutputableBndr idL, OutputableBndr 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 HsIPName id) (LHsExpr id)
- type LSig name = Located (Sig name)
- data Sig name
- = TypeSig [Located name] (LHsType name)
- | PatSynSig (Located name) (HsPatSynDetails (LHsType name)) (LHsType name) (LHsContext name) (LHsContext name)
- | GenericSig [Located name] (LHsType name)
- | IdSig Id
- | FixSig (FixitySig name)
- | InlineSig (Located name) InlinePragma
- | SpecSig (Located name) (LHsType name) InlinePragma
- | SpecInstSig (LHsType name)
- | MinimalSig (BooleanFormula (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
- isVanillaLSig :: 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
- hsSigDoc :: Sig name -> SDoc
- ppr_sig :: OutputableBndr name => Sig name -> SDoc
- pprPatSynSig :: OutputableBndr a => a -> Bool -> HsPatSynDetails SDoc -> SDoc -> Maybe SDoc -> Maybe SDoc -> SDoc
- pragBrackets :: SDoc -> SDoc
- pprVarSig :: OutputableBndr id => [id] -> SDoc -> SDoc
- pprSpec :: OutputableBndr id => id -> SDoc -> InlinePragma -> SDoc
- pprTcSpecPrags :: TcSpecPrags -> SDoc
- pprMinimalSig :: OutputableBndr name => BooleanFormula (Located name) -> SDoc
- data HsPatSynDetails a
- = InfixPatSyn a a
- | PrefixPatSyn [a]
- data HsPatSynDirLR idL idR
- type HsPatSynDir id = HsPatSynDirLR id id
Documentation
type HsLocalBinds id = HsLocalBindsLR id id Source
data HsLocalBindsLR idL idR Source
Bindings in a 'let' expression or a 'where' clause
HsValBinds (HsValBindsLR idL idR) | |
HsIPBinds (HsIPBinds idR) | |
EmptyLocalBinds |
(Data idL, Data idR) => Data (HsLocalBindsLR idL idR) | |
(OutputableBndr idL, OutputableBndr idR) => Outputable (HsLocalBindsLR idL idR) | |
Typeable (* -> * -> *) HsLocalBindsLR |
type HsValBinds id = HsValBindsLR id id Source
data HsValBindsLR idL idR Source
Value bindings (not implicit parameters)
ValBindsIn (LHsBindsLR idL idR) [LSig idR] | Before renaming RHS; idR is always RdrName Not dependency analysed Recursive by default |
ValBindsOut [(RecFlag, LHsBinds idL)] [LSig Name] | After renaming RHS; idR can be Name or Id Dependency analysed, later bindings in the list may depend on earlier ones. |
(Data idL, Data idR) => Data (HsValBindsLR idL idR) | |
(OutputableBndr idL, OutputableBndr idR) => Outputable (HsValBindsLR idL idR) | |
Typeable (* -> * -> *) HsValBindsLR |
type LHsBinds id = LHsBindsLR id id Source
type LHsBindsLR idL idR = Bag (Origin, LHsBindLR idL idR) Source
FunBind | 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 |
| |
PatBind | The pattern is never a simple variable; That case is done by FunBind |
| |
VarBind | Dictionary binding and suchlike. All VarBinds are introduced by the type checker |
AbsBinds | |
| |
PatSynBind | |
|
(Data idL, Data idR) => Data (HsBindLR idL idR) | |
(OutputableBndr idL, OutputableBndr idR) => Outputable (HsBindLR idL idR) | |
Typeable (* -> * -> *) HsBindLR |
Data id => Data (ABExport id) | |
OutputableBndr id => Outputable (ABExport id) | |
Typeable (* -> *) ABExport |
placeHolderNames :: NameSet Source
Used for the NameSet in FunBind and PatBind prior to the renamer
pprLHsBinds :: (OutputableBndr idL, OutputableBndr idR) => LHsBindsLR idL idR -> SDoc Source
pprLHsBindsForUser :: (OutputableBndr idL, OutputableBndr idR, OutputableBndr id2) => LHsBindsLR idL idR -> [LSig id2] -> [SDoc] Source
pprDeclList :: [SDoc] -> SDoc Source
emptyLocalBinds :: HsLocalBindsLR a b Source
isEmptyLocalBinds :: 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
getTypeSigNames :: HsValBinds a -> NameSet Source
ppr_monobind :: (OutputableBndr idL, OutputableBndr idR) => HsBindLR idL idR -> SDoc Source
Data id => Data (HsIPBinds id) | |
OutputableBndr id => Outputable (HsIPBinds id) | |
Typeable (* -> *) HsIPBinds |
isEmptyIPBinds :: HsIPBinds id -> Bool Source
Implicit parameter bindings.
Data id => Data (IPBind id) | |
OutputableBndr id => Outputable (IPBind id) | |
Typeable (* -> *) IPBind |
Signatures and pragmas
TypeSig [Located name] (LHsType name) | An ordinary type signature
|
PatSynSig (Located name) (HsPatSynDetails (LHsType name)) (LHsType name) (LHsContext name) (LHsContext name) | A pattern synonym type signature @pattern (Eq b) => P a b :: (Num a) => T a |
GenericSig [Located name] (LHsType name) | A type signature for a default method inside a class default eq :: (Representable0 a, GEq (Rep0 a)) => a -> a -> Bool |
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) (LHsType name) InlinePragma | A specialisation pragma {-# SPECIALISE f :: Int -> Int #-} |
SpecInstSig (LHsType name) | A specialisation pragma for instance declarations only {-# SPECIALISE instance Eq [Int] #-} (Class tys); should be a specialisation of the current instance declaration |
MinimalSig (BooleanFormula (Located name)) | A minimal complete definition pragma {-# MINIMAL a | (b, c | (d | e)) #-} |
Data name => Data (Sig name) | |
OutputableBndr name => Outputable (Sig name) | |
Typeable (* -> *) Sig |
type LFixitySig name = Located (FixitySig name) Source
Data name => Data (FixitySig name) | |
OutputableBndr name => Outputable (FixitySig name) | |
Typeable (* -> *) FixitySig |
data TcSpecPrags Source
TsSpecPrags conveys 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
data TcSpecPrag Source
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
isVanillaLSig :: 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
ppr_sig :: OutputableBndr name => Sig name -> SDoc Source
pprPatSynSig :: OutputableBndr a => a -> Bool -> HsPatSynDetails SDoc -> SDoc -> Maybe SDoc -> Maybe SDoc -> SDoc Source
pragBrackets :: SDoc -> SDoc Source
pprVarSig :: OutputableBndr id => [id] -> SDoc -> SDoc Source
pprSpec :: OutputableBndr id => id -> SDoc -> InlinePragma -> SDoc Source
pprTcSpecPrags :: TcSpecPrags -> SDoc Source
pprMinimalSig :: OutputableBndr name => BooleanFormula (Located name) -> SDoc Source
data HsPatSynDetails a Source
InfixPatSyn a a | |
PrefixPatSyn [a] |
data HsPatSynDirLR idL idR Source
(Data idL, Data idR) => Data (HsPatSynDirLR idL idR) | |
Typeable (* -> * -> *) HsPatSynDirLR |
type HsPatSynDir id = HsPatSynDirLR id id Source