{-# GHC_PRAGMA INTERFACE VERSION 5 #-} interface CoreSyn where import BasicLit(BasicLit) import CharSeq(CSeq) import CmdLineOpts(GlobalSwitch) import CostCentre(CostCentre) import Id(Id) import Maybes(Labda) import Outputable(Outputable) import PreludePS(_PackedString) import PreludeRatio(Ratio(..)) import Pretty(Delay, PprStyle, PrettyRep) import PrimKind(PrimKind) import PrimOps(PrimOp) import TyCon(TyCon) import TyVar(TyVar) import UniType(UniType) data BasicLit data CoreArg a = TypeArg UniType | ValArg (CoreAtom a) data CoreAtom a = CoVarAtom a | CoLitAtom BasicLit data CoreBinding a b = CoNonRec a (CoreExpr a b) | CoRec [(a, CoreExpr a b)] data CoreCaseAlternatives a b = CoAlgAlts [(Id, [a], CoreExpr a b)] (CoreCaseDefault a b) | CoPrimAlts [(BasicLit, CoreExpr a b)] (CoreCaseDefault a b) data CoreCaseDefault a b = CoNoDefault | CoBindDefault a (CoreExpr a b) data CoreExpr a b = CoVar b | CoLit BasicLit | CoCon Id [UniType] [CoreAtom b] | CoPrim PrimOp [UniType] [CoreAtom b] | CoLam [a] (CoreExpr a b) | CoTyLam TyVar (CoreExpr a b) | CoApp (CoreExpr a b) (CoreAtom b) | CoTyApp (CoreExpr a b) UniType | CoCase (CoreExpr a b) (CoreCaseAlternatives a b) | CoLet (CoreBinding a b) (CoreExpr a b) | CoSCC CostCentre (CoreExpr a b) data CostCentre data Id data Labda a data PprStyle data PrettyRep data PrimOp data TyCon data TyVar data UniType applyToArgs :: CoreExpr a b -> [CoreArg b] -> CoreExpr a b collectArgs :: CoreExpr a b -> (CoreExpr a b, [CoreArg b]) decomposeArgs :: [CoreArg a] -> ([UniType], [CoreAtom a], [CoreArg a]) mkCoTyApp :: CoreExpr a b -> UniType -> CoreExpr a b pprCoreBinding :: PprStyle -> (PprStyle -> a -> Int -> Bool -> PrettyRep) -> (PprStyle -> a -> Int -> Bool -> PrettyRep) -> (PprStyle -> b -> Int -> Bool -> PrettyRep) -> CoreBinding a b -> Int -> Bool -> PrettyRep pprCoreExpr :: PprStyle -> (PprStyle -> a -> Int -> Bool -> PrettyRep) -> (PprStyle -> a -> Int -> Bool -> PrettyRep) -> (PprStyle -> b -> Int -> Bool -> PrettyRep) -> CoreExpr a b -> Int -> Bool -> PrettyRep instance Outputable a => Outputable (CoreArg a) instance Outputable a => Outputable (CoreAtom a) instance (Outputable a, Outputable b) => Outputable (CoreBinding a b) instance (Outputable a, Outputable b) => Outputable (CoreCaseAlternatives a b) instance (Outputable a, Outputable b) => Outputable (CoreCaseDefault a b) instance (Outputable a, Outputable b) => Outputable (CoreExpr a b)