ghc-7.4.2: The GHC API

Safe Haskell | None

SimplEnv

# Documentation

type InId = Id

type InBind = CoreBind

type InExpr = CoreExpr

type InAlt = CoreAlt

type InArg = CoreArg

type InType = Type

type InBndr = CoreBndr

type InVar = Var

type OutId = Id

type OutTyVar = TyVar

type OutBind = CoreBind

type OutExpr = CoreExpr

type OutAlt = CoreAlt

type OutArg = CoreArg

type OutType = Type

type OutBndr = CoreBndr

type OutVar = Var

type InCoercion = Coercion

type OutCoercion = Coercion

setMode :: SimplifierMode -> SimplEnv -> SimplEnv

getMode :: SimplEnv -> SimplifierMode

updMode :: (SimplifierMode -> SimplifierMode) -> SimplEnv -> SimplEnv

data SimplEnv

Constructors

SimplEnv |

Fields

seMode :: SimplifierMode
seTvSubst :: TvSubstEnv
seCvSubst :: CvSubstEnv
seIdSubst :: SimplIdSubst
seInScope :: InScopeSet
seFloats :: Floats

type StaticEnv = SimplEnv

pprSimplEnv :: SimplEnv -> SDoc

mkSimplEnv :: SimplifierMode -> SimplEnv

extendIdSubst :: SimplEnv -> Id -> SimplSR -> SimplEnv

extendTvSubst :: SimplEnv -> TyVar -> Type -> SimplEnv

extendCvSubst :: SimplEnv -> CoVar -> Coercion -> SimplEnv

zapSubstEnv :: SimplEnv -> SimplEnv

setSubstEnv :: SimplEnv -> TvSubstEnv -> CvSubstEnv -> SimplIdSubst -> SimplEnv

getInScope :: SimplEnv -> InScopeSet

setInScope :: SimplEnv -> SimplEnv -> SimplEnv

setInScopeSet :: SimplEnv -> InScopeSet -> SimplEnv

modifyInScope :: SimplEnv -> CoreBndr -> SimplEnv

addNewInScopeIds :: SimplEnv -> [CoreBndr] -> SimplEnv

getSimplRules :: SimplM RuleBase

data SimplSR

Constructors

DoneEx OutExpr |
DoneId OutId |
ContEx TvSubstEnv CvSubstEnv SimplIdSubst InExpr |

Instances

Outputable SimplSR |

mkContEx :: SimplEnv -> InExpr -> SimplSR

substId :: SimplEnv -> InId -> SimplSR

lookupRecBndr :: SimplEnv -> InId -> OutId

simplNonRecBndr :: SimplEnv -> InBndr -> SimplM (SimplEnv, OutBndr)

simplRecBndrs :: SimplEnv -> [InBndr] -> SimplM SimplEnv

simplLamBndr :: SimplEnv -> Var -> SimplM (SimplEnv, Var)

simplLamBndrs :: SimplEnv -> [InBndr] -> SimplM (SimplEnv, [OutBndr])

simplBinder :: SimplEnv -> InBndr -> SimplM (SimplEnv, OutBndr)

simplBinders :: SimplEnv -> [InBndr] -> SimplM (SimplEnv, [OutBndr])

addBndrRules :: SimplEnv -> InBndr -> OutBndr -> (SimplEnv, OutBndr)

substExpr :: SDoc -> SimplEnv -> CoreExpr -> CoreExpr

substTy :: SimplEnv -> Type -> Type

substTyVar :: SimplEnv -> TyVar -> Type

getTvSubst :: SimplEnv -> TvSubst

getCvSubst :: SimplEnv -> CvSubst

substCo :: SimplEnv -> Coercion -> Coercion

substCoVar :: SimplEnv -> CoVar -> Coercion

mkCoreSubst :: SDoc -> SimplEnv -> Subst

data Floats

Instances

Outputable Floats |

emptyFloats :: Floats

isEmptyFloats :: SimplEnv -> Bool

addNonRec :: SimplEnv -> OutId -> OutExpr -> SimplEnv

addFloats :: SimplEnv -> SimplEnv -> SimplEnv

extendFloats :: SimplEnv -> OutBind -> SimplEnv

wrapFloats :: SimplEnv -> OutExpr -> OutExpr

floatBinds :: Floats -> [OutBind]

setFloats :: SimplEnv -> SimplEnv -> SimplEnv

zapFloats :: SimplEnv -> SimplEnv

addRecFloats :: SimplEnv -> SimplEnv -> SimplEnv

doFloatFromRhs :: TopLevelFlag -> RecFlag -> Bool -> OutExpr -> SimplEnv -> Bool

getFloatBinds :: SimplEnv -> [CoreBind]

getFloats :: SimplEnv -> Floats

mapFloats :: SimplEnv -> ((Id, CoreExpr) -> (Id, CoreExpr)) -> SimplEnv