[project @ 1996-02-06 14:32:22 by dnt]
[ghc-hetmet.git] / ghc / compiler / coreSyn / CoreSyn.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface CoreSyn where
3 import BasicLit(BasicLit)
4 import CharSeq(CSeq)
5 import CmdLineOpts(GlobalSwitch)
6 import CostCentre(CostCentre)
7 import Id(Id)
8 import Maybes(Labda)
9 import Outputable(Outputable)
10 import PreludePS(_PackedString)
11 import PreludeRatio(Ratio(..))
12 import Pretty(Delay, PprStyle, PrettyRep)
13 import PrimKind(PrimKind)
14 import PrimOps(PrimOp)
15 import TyCon(TyCon)
16 import TyVar(TyVar)
17 import UniType(UniType)
18 data BasicLit 
19 data CoreArg a   = TypeArg UniType | ValArg (CoreAtom a)
20 data CoreAtom a   = CoVarAtom a | CoLitAtom BasicLit
21 data CoreBinding a b   = CoNonRec a (CoreExpr a b) | CoRec [(a, CoreExpr a b)]
22 data CoreCaseAlternatives a b   = CoAlgAlts [(Id, [a], CoreExpr a b)] (CoreCaseDefault a b) | CoPrimAlts [(BasicLit, CoreExpr a b)] (CoreCaseDefault a b)
23 data CoreCaseDefault a b   = CoNoDefault | CoBindDefault a (CoreExpr a b)
24 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)
25 data CostCentre 
26 data Id 
27 data Labda a 
28 data PprStyle 
29 data PrettyRep 
30 data PrimOp 
31 data TyCon 
32 data TyVar 
33 data UniType 
34 applyToArgs :: CoreExpr a b -> [CoreArg b] -> CoreExpr a b
35 collectArgs :: CoreExpr a b -> (CoreExpr a b, [CoreArg b])
36 decomposeArgs :: [CoreArg a] -> ([UniType], [CoreAtom a], [CoreArg a])
37 mkCoTyApp :: CoreExpr a b -> UniType -> CoreExpr a b
38 pprCoreBinding :: PprStyle -> (PprStyle -> a -> Int -> Bool -> PrettyRep) -> (PprStyle -> a -> Int -> Bool -> PrettyRep) -> (PprStyle -> b -> Int -> Bool -> PrettyRep) -> CoreBinding a b -> Int -> Bool -> PrettyRep
39 pprCoreExpr :: PprStyle -> (PprStyle -> a -> Int -> Bool -> PrettyRep) -> (PprStyle -> a -> Int -> Bool -> PrettyRep) -> (PprStyle -> b -> Int -> Bool -> PrettyRep) -> CoreExpr a b -> Int -> Bool -> PrettyRep
40 instance Outputable a => Outputable (CoreArg a)
41 instance Outputable a => Outputable (CoreAtom a)
42 instance (Outputable a, Outputable b) => Outputable (CoreBinding a b)
43 instance (Outputable a, Outputable b) => Outputable (CoreCaseAlternatives a b)
44 instance (Outputable a, Outputable b) => Outputable (CoreCaseDefault a b)
45 instance (Outputable a, Outputable b) => Outputable (CoreExpr a b)
46