1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface UniType where
5 import NameTypes(ShortName)
6 import Outputable(Outputable)
8 import TyVar(TyVar, TyVarTemplate)
11 type InstTyEnv = [(TyVarTemplate, UniType)]
13 type RhoType = UniType
14 type SigmaType = UniType
15 type TauType = UniType
16 type ThetaType = [(Class, UniType)]
20 data UniType = UniTyVar TyVar | UniFun UniType UniType | UniData TyCon [UniType] | UniSyn TyCon [UniType] UniType | UniDict Class UniType | UniTyVarTemplate TyVarTemplate | UniForall TyVarTemplate UniType
25 cmpUniType :: Bool -> UniType -> UniType -> Int#
32 instantiateTauTy :: [(TyVarTemplate, UniType)] -> UniType -> UniType
33 instantiateThetaTy :: [(TyVarTemplate, UniType)] -> [(Class, UniType)] -> [(Class, UniType)]
34 instantiateTy :: [(TyVarTemplate, UniType)] -> UniType -> UniType
35 mkDictTy :: Class -> UniType -> UniType
36 mkForallTy :: [TyVarTemplate] -> UniType -> UniType
37 mkRhoTy :: [(Class, UniType)] -> UniType -> UniType
38 mkSigmaTy :: [TyVarTemplate] -> [(Class, UniType)] -> UniType -> UniType
39 mkTyVarTemplateTy :: TyVarTemplate -> UniType
40 mkTyVarTy :: TyVar -> UniType
41 quantifyTy :: [TyVar] -> UniType -> ([TyVarTemplate], UniType)
43 instance Outputable UniType