{-# GHC_PRAGMA INTERFACE VERSION 5 #-} interface CoreFuns where import BasicLit(BasicLit) import CoreSyn(CoreAtom, CoreBinding, CoreCaseAlternatives, CoreExpr) import CostCentre(CostCentre) import Id(Id) import IdEnv(IdEnv(..)) import Maybes(Labda) import PrimOps(PrimOp) import TyVar(TyVar) import TyVarEnv(TyVarEnv(..)) import UniType(UniType) import UniqFM(UniqFM) import Unique(UniqSM(..), Unique, UniqueSupply) data CoreAtom a data CoreExpr a b data Id type IdEnv a = UniqFM a data Labda a type TyVarEnv a = UniqFM a data UniType data UniqFM a type UniqSM a = UniqueSupply -> (UniqueSupply, a) data Unique data UniqueSupply atomToExpr :: CoreAtom b -> CoreExpr a b bindersOf :: CoreBinding b a -> [b] coreExprArity :: (Id -> Labda (CoreExpr a Id)) -> CoreExpr a Id -> Int digForLambdas :: CoreExpr a b -> ([TyVar], [a], CoreExpr a b) escErrorMsg :: [Char] -> [Char] exprSmallEnoughToDup :: CoreExpr a Id -> Bool instCoreBindings :: UniqueSupply -> [CoreBinding Id Id] -> (UniqueSupply, [CoreBinding Id Id]) instCoreExpr :: UniqueSupply -> CoreExpr Id Id -> (UniqueSupply, CoreExpr Id Id) isWrapperFor :: CoreExpr Id Id -> Id -> Bool manifestlyBottom :: CoreExpr a Id -> Bool manifestlyWHNF :: CoreExpr a Id -> Bool maybeErrorApp :: CoreExpr a Id -> Labda UniType -> Labda (CoreExpr a Id) mkCoApps :: CoreExpr Id Id -> [CoreExpr Id Id] -> UniqueSupply -> (UniqueSupply, CoreExpr Id Id) mkCoLam :: [a] -> CoreExpr a b -> CoreExpr a b mkCoLetAny :: CoreBinding Id Id -> CoreExpr Id Id -> CoreExpr Id Id mkCoLetNoUnboxed :: CoreBinding Id Id -> CoreExpr Id Id -> CoreExpr Id Id mkCoLetUnboxedToCase :: CoreBinding Id Id -> CoreExpr Id Id -> CoreExpr Id Id mkCoLetrecAny :: [(Id, CoreExpr Id Id)] -> CoreExpr Id Id -> CoreExpr Id Id mkCoLetrecNoUnboxed :: [(Id, CoreExpr Id Id)] -> CoreExpr Id Id -> CoreExpr Id Id mkCoLetsAny :: [CoreBinding Id Id] -> CoreExpr Id Id -> CoreExpr Id Id mkCoLetsNoUnboxed :: [CoreBinding Id Id] -> CoreExpr Id Id -> CoreExpr Id Id mkCoLetsUnboxedToCase :: [CoreBinding Id Id] -> CoreExpr Id Id -> CoreExpr Id Id mkCoTyApps :: CoreExpr a b -> [UniType] -> CoreExpr a b mkCoTyLam :: [TyVar] -> CoreExpr a b -> CoreExpr a b mkCoreIfThenElse :: CoreExpr a Id -> CoreExpr a Id -> CoreExpr a Id -> CoreExpr a Id mkErrorCoApp :: UniType -> Id -> [Char] -> CoreExpr Id Id mkFunction :: [TyVar] -> [a] -> CoreExpr a b -> CoreExpr a b nonErrorRHSs :: CoreCaseAlternatives a Id -> [CoreExpr a Id] pairsFromCoreBinds :: [CoreBinding a b] -> [(a, CoreExpr a b)] squashableDictishCcExpr :: CostCentre -> CoreExpr a b -> Bool substCoreExpr :: UniqueSupply -> UniqFM (CoreExpr Id Id) -> UniqFM UniType -> CoreExpr Id Id -> (UniqueSupply, CoreExpr Id Id) substCoreExprUS :: UniqFM (CoreExpr Id Id) -> UniqFM UniType -> CoreExpr Id Id -> UniqueSupply -> (UniqueSupply, CoreExpr Id Id) typeOfCoreAlts :: CoreCaseAlternatives Id Id -> UniType typeOfCoreExpr :: CoreExpr Id Id -> UniType unTagBinders :: CoreExpr (Id, a) b -> CoreExpr Id b unTagBindersAlts :: CoreCaseAlternatives (Id, a) b -> CoreCaseAlternatives Id b