[project @ 1996-01-11 14:06:51 by partain]
[ghc-hetmet.git] / ghc / compiler / coreSyn / AnnCoreSyn.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface AnnCoreSyn where
3 import BasicLit(BasicLit)
4 import CoreSyn(CoreAtom, CoreExpr)
5 import CostCentre(CostCentre)
6 import Id(Id)
7 import Outputable(NamedThing, Outputable)
8 import PreludePS(_PackedString)
9 import PreludeRatio(Ratio(..))
10 import PrimKind(PrimKind)
11 import PrimOps(PrimOp)
12 import TyCon(TyCon)
13 import TyVar(TyVar)
14 import UniType(UniType)
15 data AnnCoreBinding a b c   = AnnCoNonRec a (c, AnnCoreExpr' a b c) | AnnCoRec [(a, (c, AnnCoreExpr' a b c))]
16 data AnnCoreCaseAlternatives a b c   = AnnCoAlgAlts [(Id, [a], (c, AnnCoreExpr' a b c))] (AnnCoreCaseDefault a b c) | AnnCoPrimAlts [(BasicLit, (c, AnnCoreExpr' a b c))] (AnnCoreCaseDefault a b c)
17 data AnnCoreCaseDefault a b c   = AnnCoNoDefault | AnnCoBindDefault a (c, AnnCoreExpr' a b c)
18 type AnnCoreExpr a b c = (c, AnnCoreExpr' a b c)
19 data AnnCoreExpr' a b c   = AnnCoVar b | AnnCoLit BasicLit | AnnCoCon Id [UniType] [CoreAtom b] | AnnCoPrim PrimOp [UniType] [CoreAtom b] | AnnCoLam [a] (c, AnnCoreExpr' a b c) | AnnCoTyLam TyVar (c, AnnCoreExpr' a b c) | AnnCoApp (c, AnnCoreExpr' a b c) (CoreAtom b) | AnnCoTyApp (c, AnnCoreExpr' a b c) UniType | AnnCoCase (c, AnnCoreExpr' a b c) (AnnCoreCaseAlternatives a b c) | AnnCoLet (AnnCoreBinding a b c) (c, AnnCoreExpr' a b c) | AnnCoSCC CostCentre (c, AnnCoreExpr' a b c)
20 data BasicLit 
21 data CostCentre 
22 data Id 
23 data PrimOp 
24 data TyCon 
25 data TyVar 
26 data UniType 
27 deAnnotate :: (a, AnnCoreExpr' b c a) -> CoreExpr b c
28 instance Eq BasicLit
29 instance Eq PrimOp
30 instance Eq TyCon
31 instance Eq TyVar
32 instance Eq UniType
33 instance Ord BasicLit
34 instance Ord TyCon
35 instance Ord TyVar
36 instance NamedThing TyCon
37 instance NamedThing TyVar
38 instance Outputable BasicLit
39 instance Outputable PrimOp
40 instance Outputable TyCon
41 instance Outputable TyVar
42 instance Outputable UniType
43