\begin{code}
interface TyLoop where
-import PreludePS(_PackedString)
+--import PreludePS(_PackedString)
+import FastString (FastString)
import PreludeStdIO ( Maybe )
import Unique ( Unique )
import FieldLabel ( FieldLabel )
-import Id ( Id, GenId, StrictnessMark, mkTupleCon, mkDataCon,
- isNullaryDataCon, dataConArgTys )
+import Id ( Id, GenId, StrictnessMark, mkDataCon, mkTupleCon,
+ isNullaryDataCon, dataConArgTys, idType )
+import TysWiredIn ( tupleCon, tupleTyCon )
import PprType ( specMaybeTysSuffix )
import Name ( Name )
import TyCon ( TyCon )
import TyVar ( GenTyVar, TyVar )
-import Type ( GenType, Type )
+import Type ( splitSigmaTy, splitFunTy, GenType, Type )
import Usage ( GenUsage )
import Class ( Class, GenClass )
import TysPrim ( voidTy )
type Id = GenId (GenType (GenTyVar (GenUsage Unique)) Unique)
-- Needed in TyCon
-mkTupleCon :: Int -> Id
+tupleCon :: Int -> Id
isNullaryDataCon :: Id -> Bool
-specMaybeTysSuffix :: [Maybe Type] -> _PackedString
+specMaybeTysSuffix :: [Maybe Type] -> FastString
+idType :: Id -> Type
+splitSigmaTy :: GenType t u -> ([t], [(Class,GenType t u)], GenType t u)
+splitFunTy :: GenType t u -> ([GenType t u], GenType t u)
instance Eq (GenClass a b)
-- Needed in Type
+tupleTyCon :: Int -> TyCon
dataConArgTys :: Id -> [Type] -> [Type]
voidTy :: Type
mkDataCon :: Name -> [StrictnessMark] -> [FieldLabel]
-> [TyVar] -> [(Class,Type)] -> [Type] -> TyCon
-> Id
+mkTupleCon :: Int -> Name -> Type -> Id
\end{code}