{-# GHC_PRAGMA INTERFACE VERSION 5 #-} interface TyCon where import Class(Class, ClassOp) import Id(DataCon(..), Id) import InstEnv(InstTemplate) import Maybes(Labda) import NameTypes(FullName) import Outputable(NamedThing, Outputable) import PrimKind(PrimKind) import TyVar(TyVar, TyVarTemplate) import UniType(UniType) import Unique(Unique) type Arity = Int data Class type DataCon = Id data Id data Labda a data FullName data PrimKind data TyCon = SynonymTyCon Unique FullName Int [TyVarTemplate] UniType Bool | DataTyCon Unique FullName Int [TyVarTemplate] [Id] [Class] Bool | TupleTyCon Int | PrimTyCon Unique FullName Int ([PrimKind] -> PrimKind) | SpecTyCon TyCon [Labda UniType] data TyVarTemplate data UniType data Unique cmpTyCon :: TyCon -> TyCon -> Int# derivedFor :: Class -> TyCon -> Bool eqTyCon :: TyCon -> TyCon -> Bool getTyConArity :: TyCon -> Int getTyConDataCons :: TyCon -> [Id] getTyConDerivings :: TyCon -> [Class] getTyConFamilySize :: TyCon -> Labda Int getTyConKind :: TyCon -> [PrimKind] -> PrimKind getTyConTyVarTemplates :: TyCon -> [TyVarTemplate] isBigTupleTyCon :: TyCon -> Bool isBoxedTyCon :: TyCon -> Bool isDataTyCon :: TyCon -> Bool isEnumerationTyCon :: TyCon -> Bool isLocalGenTyCon :: TyCon -> Bool isLocalSpecTyCon :: Bool -> TyCon -> Bool isPrimTyCon :: TyCon -> Bool isSynTyCon :: TyCon -> Bool isTupleTyCon :: TyCon -> Bool isVisibleSynTyCon :: TyCon -> Bool maybeCharLikeTyCon :: TyCon -> Labda Id maybeDoubleLikeTyCon :: TyCon -> Labda Id maybeFloatLikeTyCon :: TyCon -> Labda Id maybeIntLikeTyCon :: TyCon -> Labda Id maybeSingleConstructorTyCon :: TyCon -> Labda Id mkDataTyCon :: Unique -> FullName -> Int -> [TyVarTemplate] -> [Id] -> [Class] -> Bool -> TyCon mkPrimTyCon :: Unique -> FullName -> Int -> ([PrimKind] -> PrimKind) -> TyCon mkSpecTyCon :: TyCon -> [Labda UniType] -> TyCon mkSynonymTyCon :: Unique -> FullName -> Int -> [TyVarTemplate] -> UniType -> Bool -> TyCon mkTupleTyCon :: Int -> TyCon instance Eq TyCon instance Ord TyCon instance NamedThing TyCon instance Outputable TyCon