-- instances
--
, global_fam_inst_env :: FamInstEnvs
+
+ -- Hoisted bindings
+ , global_bindings :: [(Var, CoreExpr)]
}
data LocalEnv = LocalEnv {
-- Mapping from tyvars to their PA dictionaries
, local_tyvar_pa :: VarEnv CoreExpr
-
- -- Hoisted bindings
- , local_bindings :: [(Var, CoreExpr)]
}
, global_tycon_pa = emptyNameEnv
, global_inst_env = instEnvs
, global_fam_inst_env = famInstEnvs
+ , global_bindings = []
}
emptyLocalEnv = LocalEnv {
local_vars = emptyVarEnv
, local_tyvar_pa = emptyVarEnv
- , local_bindings = []
}
-- FIXME
hoistExpr fs expr
= do
var <- newLocalVar fs (exprType expr)
- updLEnv $ \env ->
- env { local_bindings = (var, expr) : local_bindings env }
+ updGEnv $ \env ->
+ env { global_bindings = (var, expr) : global_bindings env }
return var