[project @ 1996-02-06 14:32:22 by dnt]
[ghc-hetmet.git] / ghc / compiler / typecheck / TcDeriv.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface TcDeriv where
3 import Bag(Bag)
4 import Class(Class)
5 import CmdLineOpts(GlobalSwitch)
6 import HsBinds(Binds)
7 import HsDecls(FixityDecl)
8 import HsPat(InPat)
9 import Maybes(Labda)
10 import Name(Name)
11 import PreludePS(_PackedString)
12 import Pretty(PprStyle, PrettyRep)
13 import ProtoName(ProtoName)
14 import SplitUniq(SplitUniqSupply)
15 import SrcLoc(SrcLoc)
16 import Subst(Subst)
17 import TcInstDcls(InstInfo)
18 import TcMonad(TcResult)
19 import TyCon(TyCon)
20 import TyVar(TyVar)
21 import UniType(UniType)
22 import UniqFM(UniqFM)
23 type DerivEqn = (Class, TyCon, [TyVar], [(Class, UniType)])
24 data TagThingWanted   = GenCon2Tag | GenTag2Con | GenMaxTag
25 con2tag_PN :: TyCon -> ProtoName
26 maxtag_PN :: TyCon -> ProtoName
27 tag2con_PN :: TyCon -> ProtoName
28 tcDeriving :: _PackedString -> (ProtoName -> Labda Name, ProtoName -> Labda Name) -> Bag InstInfo -> UniqFM TyCon -> [FixityDecl Name] -> (GlobalSwitch -> Bool) -> [UniType] -> Subst -> SplitUniqSupply -> Bag (PprStyle -> Int -> Bool -> PrettyRep) -> SrcLoc -> TcResult (Bag InstInfo, Binds Name (InPat Name), PprStyle -> Int -> Bool -> PrettyRep)
29