{-# GHC_PRAGMA INTERFACE VERSION 5 #-} interface AbsUniType where import Bag(Bag) import Class(Class, ClassOp, cmpClass, derivableClassKeys, getClassBigSig, getClassInstEnv, getClassKey, getClassOpId, getClassOpLocalType, getClassOpString, getClassOpTag, getClassOps, getClassSig, getConstMethodId, getDefaultMethodId, getSuperDictSelId, isNumericClass, isStandardClass, isSuperClassOf, mkClass, mkClassOp) import CmdLineOpts(GlobalSwitch) import Id(DataCon(..), Id) import IdEnv(IdEnv(..)) import InstEnv(ClassInstEnv(..), InstTemplate, MatchEnv(..)) import Maybes(Labda) import Name(Name) import NameTypes(FullName, ShortName) import Outputable(ExportFlag, NamedThing, Outputable) import PreludePS(_PackedString) import Pretty(PprStyle, Pretty(..), PrettyRep) import PrimKind(PrimKind) import SimplEnv(UnfoldingDetails) import TyCon(Arity(..), TyCon, cmpTyCon, derivedFor, eqTyCon, getTyConArity, getTyConDataCons, getTyConDerivings, getTyConFamilySize, getTyConKind, getTyConTyVarTemplates, isBigTupleTyCon, isBoxedTyCon, isDataTyCon, isEnumerationTyCon, isLocalGenTyCon, isLocalSpecTyCon, isPrimTyCon, isSynTyCon, isTupleTyCon, isVisibleSynTyCon, maybeCharLikeTyCon, maybeDoubleLikeTyCon, maybeFloatLikeTyCon, maybeIntLikeTyCon, maybeSingleConstructorTyCon, mkDataTyCon, mkPrimTyCon, mkSpecTyCon, mkSynonymTyCon, mkTupleTyCon) import TyVar(TyVar, TyVarTemplate, alphaTyVars, alpha_tv, alpha_tyvar, beta_tv, beta_tyvar, cloneTyVar, cloneTyVarFromTemplate, cmpTyVar, delta_tv, delta_tyvar, epsilon_tv, epsilon_tyvar, eqTyVar, gamma_tv, gamma_tyvar, instantiateTyVarTemplates, ltTyVar, mkOpenSysTyVar, mkPolySysTyVar, mkSysTyVarTemplate, mkTemplateTyVars, mkUserTyVar, mkUserTyVarTemplate) import TyVarEnv(TyVarEnv(..), TypeEnv(..)) import UniTyFuns(applyNonSynTyCon, applySynTyCon, applyTy, applyTyCon, applyTypeEnvToThetaTy, applyTypeEnvToTy, cmpUniTypeMaybeList, expandVisibleTySyn, extractTyVarTemplatesFromTy, extractTyVarsFromTy, extractTyVarsFromTys, funResultTy, getMentionedTyCons, getMentionedTyConsAndClassesFromClass, getMentionedTyConsAndClassesFromTyCon, getMentionedTyConsAndClassesFromUniType, getTauType, getTyVar, getTyVarMaybe, getTyVarTemplateMaybe, getTypeString, getUniDataSpecTyCon, getUniDataSpecTyCon_maybe, getUniDataTyCon, getUniDataTyCon_maybe, getUniTyDescription, glueTyArgs, instanceIsExported, isDictTy, isForAllTy, isFunType, isGroundOrTyVarTy, isGroundTy, isLeakFreeType, isPrimType, isTauTy, isTyVarTemplateTy, isTyVarTy, isUnboxedDataType, kindFromType, mapOverTyVars, matchTy, maybeBoxedPrimType, maybePurelyLocalClass, maybePurelyLocalTyCon, maybePurelyLocalType, maybeUnpackFunTy, mkSuperDictSelType, pprClassOp, pprIfaceClass, pprMaybeTy, pprParendUniType, pprTyCon, pprUniType, returnsRealWorld, showTyCon, showTypeCategory, specMaybeTysSuffix, specialiseTy, splitDictType, splitForalls, splitTyArgs, splitType, splitTypeWithDictsAsArgs, typeMaybeString, unDictifyTy) import UniType(InstTyEnv(..), RhoType(..), SigmaType(..), TauType(..), ThetaType(..), UniType, alpha, alpha_ty, beta, beta_ty, cmpUniType, delta, delta_ty, epsilon, epsilon_ty, gamma, gamma_ty, instantiateTauTy, instantiateThetaTy, instantiateTy, mkDictTy, mkForallTy, mkRhoTy, mkSigmaTy, mkTyVarTemplateTy, mkTyVarTy, quantifyTy) import UniqFM(UniqFM) import Unique(Unique) data Bag a data Class data ClassOp data GlobalSwitch type DataCon = Id data Id type IdEnv a = UniqFM a type ClassInstEnv = [(UniType, InstTemplate)] data InstTemplate type MatchEnv a b = [(a, b)] data Labda a data Name data FullName data ShortName data ExportFlag data PprStyle type Pretty = Int -> Bool -> PrettyRep data PrettyRep data PrimKind data UnfoldingDetails type Arity = Int data TyCon data TyVar data TyVarTemplate type TyVarEnv a = UniqFM a type TypeEnv = UniqFM UniType type InstTyEnv = [(TyVarTemplate, UniType)] type RhoType = UniType type SigmaType = UniType type TauType = UniType type ThetaType = [(Class, UniType)] data UniType data UniqFM a data Unique cmpClass :: Class -> Class -> Int# derivableClassKeys :: [Unique] getClassBigSig :: Class -> (TyVarTemplate, [Class], [Id], [ClassOp], [Id], [Id]) getClassInstEnv :: Class -> [(UniType, InstTemplate)] getClassKey :: Class -> Unique getClassOpId :: Class -> ClassOp -> Id getClassOpLocalType :: ClassOp -> UniType getClassOpString :: ClassOp -> _PackedString getClassOpTag :: ClassOp -> Int getClassOps :: Class -> [ClassOp] getClassSig :: Class -> (TyVarTemplate, [Class], [ClassOp]) getConstMethodId :: Class -> ClassOp -> UniType -> Id getDefaultMethodId :: Class -> ClassOp -> Id getSuperDictSelId :: Class -> Class -> Id isNumericClass :: Class -> Bool isStandardClass :: Class -> Bool isSuperClassOf :: Class -> Class -> Labda [Class] mkClass :: Name -> TyVarTemplate -> [Class] -> [Id] -> [ClassOp] -> [Id] -> [Id] -> [(UniType, InstTemplate)] -> Class mkClassOp :: _PackedString -> Int -> UniType -> ClassOp 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 alphaTyVars :: [TyVarTemplate] alpha_tv :: TyVarTemplate alpha_tyvar :: TyVar beta_tv :: TyVarTemplate beta_tyvar :: TyVar cloneTyVar :: TyVar -> Unique -> TyVar cloneTyVarFromTemplate :: TyVarTemplate -> Unique -> TyVar cmpTyVar :: TyVar -> TyVar -> Int# delta_tv :: TyVarTemplate delta_tyvar :: TyVar epsilon_tv :: TyVarTemplate epsilon_tyvar :: TyVar eqTyVar :: TyVar -> TyVar -> Bool gamma_tv :: TyVarTemplate gamma_tyvar :: TyVar instantiateTyVarTemplates :: [TyVarTemplate] -> [Unique] -> ([(TyVarTemplate, UniType)], [TyVar], [UniType]) ltTyVar :: TyVar -> TyVar -> Bool mkOpenSysTyVar :: Unique -> TyVar mkPolySysTyVar :: Unique -> TyVar mkSysTyVarTemplate :: Unique -> _PackedString -> TyVarTemplate mkTemplateTyVars :: [TyVar] -> [TyVarTemplate] mkUserTyVar :: Unique -> ShortName -> TyVar mkUserTyVarTemplate :: Unique -> ShortName -> TyVarTemplate applyNonSynTyCon :: TyCon -> [UniType] -> UniType applySynTyCon :: TyCon -> [UniType] -> UniType applyTy :: UniType -> UniType -> UniType applyTyCon :: TyCon -> [UniType] -> UniType applyTypeEnvToThetaTy :: UniqFM UniType -> [(a, UniType)] -> [(a, UniType)] applyTypeEnvToTy :: UniqFM UniType -> UniType -> UniType cmpUniTypeMaybeList :: [Labda UniType] -> [Labda UniType] -> Int# expandVisibleTySyn :: UniType -> UniType extractTyVarTemplatesFromTy :: UniType -> [TyVarTemplate] extractTyVarsFromTy :: UniType -> [TyVar] extractTyVarsFromTys :: [UniType] -> [TyVar] funResultTy :: UniType -> Int -> UniType getMentionedTyCons :: TyCon -> [TyCon] getMentionedTyConsAndClassesFromClass :: Class -> (Bag TyCon, Bag Class) getMentionedTyConsAndClassesFromTyCon :: TyCon -> (Bag TyCon, Bag Class) getMentionedTyConsAndClassesFromUniType :: UniType -> (Bag TyCon, Bag Class) getTauType :: UniType -> UniType getTyVar :: [Char] -> UniType -> TyVar getTyVarMaybe :: UniType -> Labda TyVar getTyVarTemplateMaybe :: UniType -> Labda TyVarTemplate getTypeString :: UniType -> [_PackedString] getUniDataSpecTyCon :: UniType -> (TyCon, [UniType], [Id]) getUniDataSpecTyCon_maybe :: UniType -> Labda (TyCon, [UniType], [Id]) getUniDataTyCon :: UniType -> (TyCon, [UniType], [Id]) getUniDataTyCon_maybe :: UniType -> Labda (TyCon, [UniType], [Id]) getUniTyDescription :: UniType -> [Char] glueTyArgs :: [UniType] -> UniType -> UniType instanceIsExported :: Class -> UniType -> Bool -> Bool isDictTy :: UniType -> Bool isForAllTy :: UniType -> Bool isFunType :: UniType -> Bool isGroundOrTyVarTy :: UniType -> Bool isGroundTy :: UniType -> Bool isLeakFreeType :: [TyCon] -> UniType -> Bool isPrimType :: UniType -> Bool isTauTy :: UniType -> Bool isTyVarTemplateTy :: UniType -> Bool isTyVarTy :: UniType -> Bool isUnboxedDataType :: UniType -> Bool kindFromType :: UniType -> PrimKind mapOverTyVars :: (TyVar -> UniType) -> UniType -> UniType matchTy :: UniType -> UniType -> Labda [(TyVarTemplate, UniType)] maybeBoxedPrimType :: UniType -> Labda (Id, UniType) maybePurelyLocalClass :: Class -> Labda [Int -> Bool -> PrettyRep] maybePurelyLocalTyCon :: TyCon -> Labda [Int -> Bool -> PrettyRep] maybePurelyLocalType :: UniType -> Labda [Int -> Bool -> PrettyRep] maybeUnpackFunTy :: UniType -> Labda (UniType, UniType) mkSuperDictSelType :: Class -> Class -> UniType pprClassOp :: PprStyle -> ClassOp -> Int -> Bool -> PrettyRep pprIfaceClass :: (GlobalSwitch -> Bool) -> (Id -> Id) -> UniqFM UnfoldingDetails -> Class -> Int -> Bool -> PrettyRep pprMaybeTy :: PprStyle -> Labda UniType -> Int -> Bool -> PrettyRep pprParendUniType :: PprStyle -> UniType -> Int -> Bool -> PrettyRep pprTyCon :: PprStyle -> TyCon -> [[Labda UniType]] -> Int -> Bool -> PrettyRep pprUniType :: PprStyle -> UniType -> Int -> Bool -> PrettyRep returnsRealWorld :: UniType -> Bool showTyCon :: PprStyle -> TyCon -> [Char] showTypeCategory :: UniType -> Char specMaybeTysSuffix :: [Labda UniType] -> _PackedString specialiseTy :: UniType -> [Labda UniType] -> Int -> UniType splitDictType :: UniType -> (Class, UniType) splitForalls :: UniType -> ([TyVarTemplate], UniType) splitTyArgs :: UniType -> ([UniType], UniType) splitType :: UniType -> ([TyVarTemplate], [(Class, UniType)], UniType) splitTypeWithDictsAsArgs :: UniType -> ([TyVarTemplate], [UniType], UniType) typeMaybeString :: Labda UniType -> [_PackedString] unDictifyTy :: UniType -> UniType alpha :: UniType alpha_ty :: UniType beta :: UniType beta_ty :: UniType cmpUniType :: Bool -> UniType -> UniType -> Int# delta :: UniType delta_ty :: UniType epsilon :: UniType epsilon_ty :: UniType gamma :: UniType gamma_ty :: UniType instantiateTauTy :: [(TyVarTemplate, UniType)] -> UniType -> UniType instantiateThetaTy :: [(TyVarTemplate, UniType)] -> [(Class, UniType)] -> [(Class, UniType)] instantiateTy :: [(TyVarTemplate, UniType)] -> UniType -> UniType mkDictTy :: Class -> UniType -> UniType mkForallTy :: [TyVarTemplate] -> UniType -> UniType mkRhoTy :: [(Class, UniType)] -> UniType -> UniType mkSigmaTy :: [TyVarTemplate] -> [(Class, UniType)] -> UniType -> UniType mkTyVarTemplateTy :: TyVarTemplate -> UniType mkTyVarTy :: TyVar -> UniType quantifyTy :: [TyVar] -> UniType -> ([TyVarTemplate], UniType) instance Eq Class instance Eq ClassOp instance Eq TyCon instance Eq TyVar instance Eq TyVarTemplate instance Eq UniType instance Eq Unique instance Ord Class instance Ord ClassOp instance Ord TyCon instance Ord TyVar instance Ord TyVarTemplate instance Ord Unique instance NamedThing Class instance NamedThing FullName instance NamedThing ShortName instance NamedThing TyCon instance NamedThing TyVar instance NamedThing TyVarTemplate instance Outputable Class instance Outputable ClassOp instance Outputable FullName instance Outputable ShortName instance Outputable TyCon instance Outputable TyVar instance Outputable TyVarTemplate instance Outputable UniType instance Text Unique