{-# GHC_PRAGMA INTERFACE VERSION 5 #-} interface SimplMonad where import BasicLit(BasicLit) import BinderInfo(BinderInfo, DuplicationDanger, FunOrArg, InsideSCC) import CoreSyn(CoreAtom, CoreBinding, CoreCaseAlternatives, CoreExpr) import CostCentre(CostCentre) import Id(Id) import PrimOps(PrimOp) import SimplEnv(SimplEnv) import SplitUniq(SplitUniqSupply) import TyVar(TyVar) import UniType(UniType) infixr 9 `thenSmpl` infixr 9 `thenSmpl_` data BinderInfo data CoreExpr a b data Id data PrimOp data SimplCount type SmplM a = SplitUniqSupply -> SimplCount -> (a, SimplCount) data SplitUniqSupply data TickType = UnfoldingDone | FoldrBuild | MagicUnfold | ConReused | CaseFloatFromLet | CaseOfCase | LetFloatFromLet | LetFloatFromCase | KnownBranch | Let2Case | CaseMerge | CaseElim | CaseIdentity | AtomicRhs | EtaExpansion | CaseOfError | FoldrConsNil | Foldr_Nil | FoldrFoldr | Foldr_List | FoldrCons | FoldrInline | TyBetaReduction | BetaReduction data TyVar data UniType cloneId :: SimplEnv -> (Id, BinderInfo) -> SplitUniqSupply -> SimplCount -> (Id, SimplCount) cloneIds :: SimplEnv -> [(Id, BinderInfo)] -> SplitUniqSupply -> SimplCount -> ([Id], SimplCount) cloneTyVarSmpl :: TyVar -> SplitUniqSupply -> SimplCount -> (TyVar, SimplCount) combineSimplCounts :: SimplCount -> SimplCount -> SimplCount detailedSimplCount :: SplitUniqSupply -> SimplCount -> (SimplCount, SimplCount) initSmpl :: SplitUniqSupply -> (SplitUniqSupply -> SimplCount -> (a, SimplCount)) -> (a, SimplCount) mapAndUnzipSmpl :: (a -> SplitUniqSupply -> SimplCount -> ((b, c), SimplCount)) -> [a] -> SplitUniqSupply -> SimplCount -> (([b], [c]), SimplCount) mapSmpl :: (a -> SplitUniqSupply -> SimplCount -> (b, SimplCount)) -> [a] -> SplitUniqSupply -> SimplCount -> ([b], SimplCount) newId :: UniType -> SplitUniqSupply -> SimplCount -> (Id, SimplCount) newIds :: [UniType] -> SplitUniqSupply -> SimplCount -> ([Id], SimplCount) returnSmpl :: a -> SplitUniqSupply -> SimplCount -> (a, SimplCount) showSimplCount :: SimplCount -> [Char] simplCount :: SplitUniqSupply -> SimplCount -> (Int, SimplCount) thenSmpl :: (SplitUniqSupply -> SimplCount -> (a, SimplCount)) -> (a -> SplitUniqSupply -> SimplCount -> (b, SimplCount)) -> SplitUniqSupply -> SimplCount -> (b, SimplCount) thenSmpl_ :: (SplitUniqSupply -> SimplCount -> (a, SimplCount)) -> (SplitUniqSupply -> SimplCount -> (b, SimplCount)) -> SplitUniqSupply -> SimplCount -> (b, SimplCount) tick :: TickType -> SplitUniqSupply -> SimplCount -> ((), SimplCount) tickN :: TickType -> Int -> SplitUniqSupply -> SimplCount -> ((), SimplCount) zeroSimplCount :: SimplCount instance Eq TickType instance Ix TickType instance Ord TickType instance Text TickType