[project @ 1996-01-11 14:06:51 by partain]
[ghc-hetmet.git] / ghc / compiler / abstractSyn / HsTypes.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface HsTypes where
3 import Name(Name)
4 import Outputable(Outputable)
5 import Pretty(PprStyle, PrettyRep)
6 import ProtoName(ProtoName)
7 type ClassAssertion a = (a, a)
8 type Context a = [(a, a)]
9 data MonoType a   = MonoTyVar a | MonoTyCon a [MonoType a] | FunMonoTy (MonoType a) (MonoType a) | ListMonoTy (MonoType a) | TupleMonoTy [PolyType a] | MonoTyVarTemplate a | MonoDict a (MonoType a)
10 data PolyType a   = UnoverloadedTy (MonoType a) | OverloadedTy [(a, a)] (MonoType a) | ForAllTy [a] (MonoType a)
11 type ProtoNameContext = [(ProtoName, ProtoName)]
12 type ProtoNameMonoType = MonoType ProtoName
13 type ProtoNamePolyType = PolyType ProtoName
14 type RenamedContext = [(Name, Name)]
15 type RenamedMonoType = MonoType Name
16 type RenamedPolyType = PolyType Name
17 cmpList :: (a -> a -> Int#) -> [a] -> [a] -> Int#
18 cmpMonoType :: (a -> a -> Int#) -> MonoType a -> MonoType a -> Int#
19 cmpPolyType :: (a -> a -> Int#) -> PolyType a -> PolyType a -> Int#
20 eqMonoType :: MonoType ProtoName -> MonoType ProtoName -> Bool
21 pprContext :: Outputable a => PprStyle -> [(a, a)] -> Int -> Bool -> PrettyRep
22 pprParendMonoType :: Outputable a => PprStyle -> MonoType a -> Int -> Bool -> PrettyRep
23 instance Outputable a => Outputable (MonoType a)
24 instance Outputable a => Outputable (PolyType a)
25