1 Breaks the TyCon/types loop and the types/Id loop.
6 import PreludePS(_PackedString)
7 import PreludeStdIO ( Maybe )
8 import Unique ( Unique )
10 import FieldLabel ( FieldLabel )
11 import Id ( Id, GenId, StrictnessMark, mkTupleCon, mkDataCon,
12 isNullaryDataCon, dataConArgTys, idType )
13 import PprType ( specMaybeTysSuffix )
15 import TyCon ( TyCon )
16 import TyVar ( GenTyVar, TyVar )
17 import Type ( splitSigmaTy, splitFunTy, GenType, Type )
18 import Usage ( GenUsage )
19 import Class ( Class, GenClass )
20 import TysPrim ( voidTy )
23 data GenType tyvar uvar
25 data GenClass tyvar uvar
28 type Type = GenType (GenTyVar (GenUsage Unique)) Unique
29 type TyVar = GenTyVar (GenUsage Unique)
30 type Class = GenClass (GenTyVar (GenUsage Unique)) Unique
31 type Id = GenId (GenType (GenTyVar (GenUsage Unique)) Unique)
34 mkTupleCon :: Int -> Id
35 isNullaryDataCon :: Id -> Bool
36 specMaybeTysSuffix :: [Maybe Type] -> _PackedString
38 splitSigmaTy :: GenType t u -> ([t], [(Class,GenType t u)], GenType t u)
39 splitFunTy :: GenType t u -> ([GenType t u], GenType t u)
40 instance Eq (GenClass a b)
43 dataConArgTys :: Id -> [Type] -> [Type]
46 -- Needed in TysWiredIn
47 data StrictnessMark = MarkedStrict | NotMarkedStrict
48 mkDataCon :: Name -> [StrictnessMark] -> [FieldLabel]
49 -> [TyVar] -> [(Class,Type)] -> [Type] -> TyCon