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). \begin{code} interface SmplLoop where import MagicUFs ( MagicUnfoldingFun ) import SimplEnv ( SimplEnv, InBinding(..), InExpr(..), OutArg(..), OutExpr(..), OutType(..) ) import Simplify ( simplExpr, simplBind ) import SimplMonad ( SmplM(..) ) data MagicUnfoldingFun simplExpr :: SimplEnv -> InExpr -> [OutArg] -> SmplM OutExpr simplBind :: SimplEnv -> InBinding -> (SimplEnv -> SmplM OutExpr) -> OutType -> SmplM OutExpr \end{code}