Breaks the loop between SimplEnv and MagicUFs, by telling SimplEnv all it needs to know about MagicUFs (not much). Also break the loop between SimplVar/SimplCase (which use Simplify.simplExpr) and SimplExpr (which uses whatever SimplVar/SimplCase cough up). Tell SimplEnv about SimplUtils.simplIdWantsToBeINLINEd. \begin{code} interface SmplLoop where import MagicUFs ( MagicUnfoldingFun ) import SimplEnv ( SimplEnv, InBinding(..), InExpr(..), OutArg(..), OutExpr(..), OutType(..) ) import Simplify ( simplExpr, simplBind ) import SimplUtils ( simplIdWantsToBeINLINEd ) import BinderInfo(BinderInfo) import CoreSyn(GenCoreArg, GenCoreBinding, GenCoreExpr) import Id(GenId) import SimplMonad(SimplCount) import TyVar(GenTyVar) import Type(GenType) import UniqSupply(UniqSupply) import Unique(Unique) import Usage(GenUsage) data MagicUnfoldingFun data SimplCount simplIdWantsToBeINLINEd :: GenId (GenType (GenTyVar (GenUsage Unique)) Unique) -> SimplEnv -> Bool simplBind :: SimplEnv -> GenCoreBinding (GenId (GenType (GenTyVar (GenUsage Unique)) Unique), BinderInfo) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique -> (SimplEnv -> UniqSupply -> SimplCount -> (GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique, SimplCount)) -> GenType (GenTyVar (GenUsage Unique)) Unique -> UniqSupply -> SimplCount -> (GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique, SimplCount) simplExpr :: SimplEnv -> GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique), BinderInfo) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique -> [GenCoreArg (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique] -> UniqSupply -> SimplCount -> (GenCoreExpr (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenId (GenType (GenTyVar (GenUsage Unique)) Unique)) (GenTyVar (GenUsage Unique)) Unique, SimplCount) \end{code}