ghc-8.2.2: The GHC API

Safe Haskell | None
Language | Haskell2010

SimplEnv

Contents

- The simplifier mode
- Environments
- Substitution results
- Simplifying `Id` binders
- Floats

Synopsis

- setMode :: SimplifierMode -> SimplEnv -> SimplEnv
- getMode :: SimplEnv -> SimplifierMode
- updMode :: (SimplifierMode -> SimplifierMode) -> SimplEnv -> SimplEnv
- data SimplEnv = SimplEnv {
  - seMode :: SimplifierMode
  - seTvSubst :: TvSubstEnv
  - seCvSubst :: CvSubstEnv
  - seIdSubst :: SimplIdSubst
  - seInScope :: InScopeSet
  - seFloats :: Floats
  - seJoinFloats :: JoinFloats
  }
- 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
- setInScopeAndZapFloats :: SimplEnv -> SimplEnv -> SimplEnv
- setInScopeSet :: SimplEnv -> InScopeSet -> SimplEnv
- modifyInScope :: SimplEnv -> CoreBndr -> SimplEnv
- addNewInScopeIds :: SimplEnv -> [CoreBndr] -> SimplEnv
- getSimplRules :: SimplM RuleEnv
- data SimplSR
  - = DoneEx OutExpr
  - | DoneId OutId
  - | ContEx TvSubstEnv CvSubstEnv SimplIdSubst InExpr
- mkContEx :: SimplEnv -> InExpr -> SimplSR
- substId :: SimplEnv -> InId -> SimplSR
- lookupRecBndr :: SimplEnv -> InId -> OutId
- refineFromInScope :: InScopeSet -> Var -> Var
- isJoinIdInEnv_maybe :: SimplEnv -> InId -> Maybe JoinArity
- simplNonRecBndr :: SimplEnv -> InBndr -> SimplM (SimplEnv, OutBndr)
- simplNonRecJoinBndr :: SimplEnv -> OutType -> InBndr -> SimplM (SimplEnv, OutBndr)
- simplRecBndrs :: SimplEnv -> [InBndr] -> SimplM SimplEnv
- simplRecJoinBndrs :: SimplEnv -> OutType -> [InBndr] -> SimplM SimplEnv
- simplBinder :: SimplEnv -> InBndr -> SimplM (SimplEnv, OutBndr)
- simplBinders :: SimplEnv -> [InBndr] -> SimplM (SimplEnv, [OutBndr])
- substTy :: SimplEnv -> Type -> Type
- substTyVar :: SimplEnv -> TyVar -> Type
- getTCvSubst :: SimplEnv -> TCvSubst
- substCo :: SimplEnv -> Coercion -> Coercion
- substCoVar :: SimplEnv -> CoVar -> Coercion
- data Floats
- emptyFloats :: Floats
- isEmptyFloats :: SimplEnv -> Bool
- addNonRec :: SimplEnv -> OutId -> OutExpr -> SimplEnv
- addFloats :: SimplEnv -> SimplEnv -> SimplEnv
- extendFloats :: SimplEnv -> OutBind -> SimplEnv
- wrapFloats :: SimplEnv -> OutExpr -> OutExpr
- setFloats :: SimplEnv -> SimplEnv -> SimplEnv
- zapFloats :: SimplEnv -> SimplEnv
- addRecFloats :: SimplEnv -> SimplEnv -> SimplEnv
- mapFloats :: SimplEnv -> ((Id, CoreExpr) -> (Id, CoreExpr)) -> SimplEnv
- doFloatFromRhs :: TopLevelFlag -> RecFlag -> Bool -> OutExpr -> SimplEnv -> Bool
- getFloatBinds :: SimplEnv -> [CoreBind]
- type JoinFloats = OrdList OutBind
- emptyJoinFloats :: JoinFloats
- isEmptyJoinFloats :: SimplEnv -> Bool
- wrapJoinFloats :: SimplEnv -> OutExpr -> OutExpr
- zapJoinFloats :: SimplEnv -> SimplEnv
- restoreJoinFloats :: SimplEnv -> SimplEnv -> SimplEnv
- getJoinFloatBinds :: SimplEnv -> [CoreBind]

# The simplifier mode

setMode :: SimplifierMode -> SimplEnv -> SimplEnv #

getMode :: SimplEnv -> SimplifierMode #

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

# Environments

data SimplEnv #

Constructors

SimplEnv |

Fields

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

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 #

setInScopeAndZapFloats :: SimplEnv -> SimplEnv -> SimplEnv #

setInScopeSet :: SimplEnv -> InScopeSet -> SimplEnv #

modifyInScope :: SimplEnv -> CoreBndr -> SimplEnv #

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

getSimplRules :: SimplM RuleEnv #

# Substitution results

data SimplSR #

A substitution result.

Constructors

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

Instances

Outputable SimplSR # |
Methods ppr :: SimplSR -> SDoc # pprPrec :: Rational -> SimplSR -> SDoc #

mkContEx :: SimplEnv -> InExpr -> SimplSR #

substId :: SimplEnv -> InId -> SimplSR #

lookupRecBndr :: SimplEnv -> InId -> OutId #

refineFromInScope :: InScopeSet -> Var -> Var #

isJoinIdInEnv_maybe :: SimplEnv -> InId -> Maybe JoinArity #

# Simplifying `Id` binders

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

simplNonRecJoinBndr :: SimplEnv -> OutType -> InBndr -> SimplM (SimplEnv, OutBndr) #

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

simplRecJoinBndrs :: SimplEnv -> OutType -> [InBndr] -> SimplM SimplEnv #

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

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

substTy :: SimplEnv -> Type -> Type #

substTyVar :: SimplEnv -> TyVar -> Type #

getTCvSubst :: SimplEnv -> TCvSubst #

substCo :: SimplEnv -> Coercion -> Coercion #

substCoVar :: SimplEnv -> CoVar -> Coercion #

# Floats

data Floats #

Instances

Outputable Floats # |
Methods ppr :: Floats -> SDoc # pprPrec :: Rational -> Floats -> SDoc #

emptyFloats :: Floats #

isEmptyFloats :: SimplEnv -> Bool #

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

addFloats :: SimplEnv -> SimplEnv -> SimplEnv #

extendFloats :: SimplEnv -> OutBind -> SimplEnv #

wrapFloats :: SimplEnv -> OutExpr -> OutExpr #

setFloats :: SimplEnv -> SimplEnv -> SimplEnv #

zapFloats :: SimplEnv -> SimplEnv #

addRecFloats :: SimplEnv -> SimplEnv -> SimplEnv #

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

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

getFloatBinds :: SimplEnv -> [CoreBind] #

type JoinFloats = OrdList OutBind #

emptyJoinFloats :: JoinFloats #

isEmptyJoinFloats :: SimplEnv -> Bool #

wrapJoinFloats :: SimplEnv -> OutExpr -> OutExpr #

zapJoinFloats :: SimplEnv -> SimplEnv #

restoreJoinFloats :: SimplEnv -> SimplEnv -> SimplEnv #

getJoinFloatBinds :: SimplEnv -> [CoreBind] #