ghc-7.0.4: The GHC API

HsBinds

Synopsis

Documentation

data HsLocalBindsLR idL idR

Instances

type HsValBinds id = HsValBindsLR id id

data HsValBindsLR idL idR

Constructors

ValBindsIn (LHsBindsLR idL idR) [LSig idR] 
ValBindsOut [(RecFlag, LHsBinds idL)] [LSig Name] 

Instances

type LHsBinds id = Bag (LHsBind id)

type LHsBind id = Located (HsBind id)

type HsBind id = HsBindLR id id

type LHsBindLR idL idR = Located (HsBindLR idL idR)

type LHsBindsLR idL idR = Bag (LHsBindLR idL idR)

data HsBindLR idL idR

Constructors

FunBind

FunBind is used for both functions f x = e and variables f = x -> e

Reason 1: Special case for type inference: see TcBinds.tcMonoBinds.

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 f :: a->a = ... parses as a pattern binding, just like (f :: a -> a) = ...

Fields

fun_id :: Located idL
 
fun_infix :: Bool

True => infix declaration

fun_matches :: MatchGroup idR

The payload

fun_co_fn :: HsWrapper

Coercion from the type of the MatchGroup to the type of the Id. Example: f :: Int -> forall a. a -> a f x y = y Then the MatchGroup will have type (Int -> a' -> a') (with a free type variable a'). The coercion will take a CoreExpr of this type and convert it to a CoreExpr of type Int -> forall a'. a' -> a' Notice that the coercion captures the free a'.

bind_fvs :: NameSet

After the renamer, this contains a superset of the Names of the other binders in this binding group that are free in the RHS of the defn Before renaming, and after typechecking, the field is unused; it's just an error thunk

fun_tick :: Maybe (Int, [Id])

This is the (optional) module-local tick number.

PatBind 

Fields

pat_lhs :: LPat idL
 
pat_rhs :: GRHSs idR
 
pat_rhs_ty :: PostTcType
 
bind_fvs :: NameSet

After the renamer, this contains a superset of the Names of the other binders in this binding group that are free in the RHS of the defn Before renaming, and after typechecking, the field is unused; it's just an error thunk

VarBind 

Fields

var_id :: idL
 
var_rhs :: LHsExpr idR
 
var_inline :: Bool
 
AbsBinds 

Fields

abs_tvs :: [TyVar]
 
abs_ev_vars :: [EvVar]
 
abs_exports :: [([TyVar], idL, idL, TcSpecPrags)]
 
abs_ev_binds :: TcEvBinds
 
abs_binds :: LHsBinds idL
 

Instances

Typeable2 HsBindLR 
(Data idL, Data idR) => Data (HsBindLR idL idR) 
(OutputableBndr idL, OutputableBndr idR) => Outputable (HsBindLR idL idR) 

data HsIPBinds id

Constructors

IPBinds [LIPBind id] TcEvBinds 

type LIPBind id = Located (IPBind id)

data IPBind id

Implicit parameter bindings.

Constructors

IPBind (IPName id) (LHsExpr id) 

Instances

data EvBind

Constructors

EvBind EvVar EvTerm 

Instances

mk_co_lam_fn :: (a -> HsWrapper) -> [a] -> HsWrapper

mk_co_app_fn :: (a -> HsWrapper) -> [a] -> HsWrapper

type LSig name = Located (Sig name)

data Sig name

Constructors

TypeSig (Located name) (LHsType name) 
IdSig Id 
FixSig (FixitySig name) 
InlineSig (Located name) InlinePragma 
SpecSig (Located name) (LHsType name) InlinePragma 
SpecInstSig (LHsType name) 

Instances

Typeable1 Sig 
Data name => Data (Sig name) 
OutputableBndr name => Outputable (Sig name) 

type LFixitySig name = Located (FixitySig name)

data FixitySig name

Constructors

FixitySig (Located name) Fixity 

Instances

sigName :: LSig name -> Maybe name

sigNameNoLoc :: Sig name -> Maybe name

isTypeLSig :: LSig name -> Bool

isSpecLSig :: LSig name -> Bool

isPragLSig :: LSig name -> Bool

hsSigDoc :: Sig name -> SDoc

eqHsSig :: Eq a => LSig a -> LSig a -> Bool

ppr_sig :: OutputableBndr name => Sig name -> SDoc

pprVarSig :: Outputable id => id -> SDoc -> SDoc

pprSpec :: Outputable id => id -> SDoc -> InlinePragma -> SDoc