1 Breaks the TyCon/types loop and the types/Id loop.
6 --import PreludePS(_PackedString)
7 import FastString (FastString)
8 import PreludeStdIO ( Maybe )
9 import Unique ( Unique )
11 import FieldLabel ( FieldLabel )
12 import Id ( Id, GenId, StrictnessMark, mkDataCon, mkTupleCon,
13 isNullaryDataCon, dataConArgTys, idType )
14 import TysWiredIn ( tupleCon, tupleTyCon )
15 import PprType ( specMaybeTysSuffix )
17 import TyCon ( TyCon )
18 import TyVar ( GenTyVar, TyVar )
19 import Type ( splitSigmaTy, splitFunTy, GenType, Type )
20 import Usage ( GenUsage )
21 import Class ( Class, GenClass )
22 import TysPrim ( voidTy )
25 data GenType tyvar uvar
27 data GenClass tyvar uvar
30 type Type = GenType (GenTyVar (GenUsage Unique)) Unique
31 type TyVar = GenTyVar (GenUsage Unique)
32 type Class = GenClass (GenTyVar (GenUsage Unique)) Unique
33 type Id = GenId (GenType (GenTyVar (GenUsage Unique)) Unique)
37 isNullaryDataCon :: Id -> Bool
38 specMaybeTysSuffix :: [Maybe Type] -> FastString
40 splitSigmaTy :: GenType t u -> ([t], [(Class,GenType t u)], GenType t u)
41 splitFunTy :: GenType t u -> ([GenType t u], GenType t u)
42 instance Eq (GenClass a b)
45 tupleTyCon :: Int -> TyCon
46 dataConArgTys :: Id -> [Type] -> [Type]
49 -- Needed in TysWiredIn
50 data StrictnessMark = MarkedStrict | NotMarkedStrict
51 mkDataCon :: Name -> [StrictnessMark] -> [FieldLabel]
52 -> [TyVar] -> [(Class,Type)] -> [Type] -> TyCon
54 mkTupleCon :: Int -> Name -> Type -> Id