{-# GHC_PRAGMA INTERFACE VERSION 3 #-} interface DefUtils where import CoreSyn(CoreAtom, CoreCaseAlternatives, CoreExpr) import DefSyn(DefBindee) import Id(Id) import SplitUniq(SplitUniqSupply) import TyVar(TyVar) import UniType(UniType) data RenameResult = NotRenaming | IsRenaming [(Id, Id)] | InconsistentRenaming [(Id, Id)] atom2expr :: CoreAtom DefBindee -> CoreExpr Id DefBindee consistent :: [(Id, Id)] -> Bool deforestable :: Id -> Bool foldrSUs :: (a -> b -> SplitUniqSupply -> b) -> b -> [a] -> SplitUniqSupply -> b freeTyVars :: CoreExpr Id DefBindee -> [TyVar] freeVars :: CoreExpr Id DefBindee -> [Id] isArgId :: Id -> Bool mkDefLetrec :: [(a, CoreExpr a b)] -> CoreExpr a b -> CoreExpr a b newDefId :: UniType -> SplitUniqSupply -> Id newTmpId :: UniType -> SplitUniqSupply -> Id rebindExpr :: CoreExpr Id DefBindee -> SplitUniqSupply -> CoreExpr Id DefBindee renameExprs :: CoreExpr Id DefBindee -> CoreExpr Id DefBindee -> SplitUniqSupply -> RenameResult strip :: CoreExpr Id DefBindee -> CoreExpr Id DefBindee stripAtom :: CoreAtom DefBindee -> CoreAtom DefBindee stripCaseAlts :: CoreCaseAlternatives Id DefBindee -> CoreCaseAlternatives Id DefBindee subst :: [(Id, CoreExpr Id DefBindee)] -> CoreExpr Id DefBindee -> SplitUniqSupply -> CoreExpr Id DefBindee union :: Eq a => [a] -> [a] -> [a]