| Safe Haskell | Safe-Infered |
|---|
Kind
Contents
- type Kind = Type
- typeKind :: Type -> Kind
- anyKind, constraintKind, ubxTupleKind, argTypeKind, openTypeKind, unliftedTypeKind, liftedTypeKind :: Kind
- mkArrowKind :: Kind -> Kind -> Kind
- mkArrowKinds :: [Kind] -> Kind -> Kind
- tySuperKindTyCon, constraintKindTyCon, argTypeKindTyCon, ubxTupleKindTyCon, unliftedTypeKindTyCon, openTypeKindTyCon, liftedTypeKindTyCon, anyKindTyCon :: TyCon
- tySuperKind :: SuperKind
- pprKind, pprParendKind :: Kind -> SDoc
- kindFunResult :: Kind -> KindOrType -> Kind
- kindAppResult :: Kind -> [Type] -> Kind
- synTyConResKind :: TyCon -> Kind
- splitKindFunTys :: Kind -> ([Kind], Kind)
- splitKindFunTysN :: Int -> Kind -> ([Kind], Kind)
- splitKindFunTy_maybe :: Kind -> Maybe (Kind, Kind)
- isLiftedTypeKind :: Kind -> Bool
- isUbxTupleKind, isConstraintOrLiftedKind, isAnyKind, isConstraintKind, isUnliftedTypeKind, isArgTypeKind, isOpenTypeKind :: Kind -> Bool
- isKind :: Kind -> Bool
- isSuperKind :: Type -> Bool
- noHashInKind :: Kind -> Bool
- isLiftedTypeKindCon :: TyCon -> Bool
- isAnyKindCon, isConstraintKindCon, isSubOpenTypeKindCon :: TyCon -> Bool
- isSubArgTypeKind, tcIsSubArgTypeKind :: Kind -> Bool
- isSubOpenTypeKind, tcIsSubOpenTypeKind :: Kind -> Bool
- isSubKind, tcIsSubKind :: Kind -> Kind -> Bool
- defaultKind :: Kind -> Kind
- isSubKindCon :: TyCon -> TyCon -> Bool
- tcIsSubKindCon :: TyCon -> TyCon -> Bool
- isKiVar :: TyVar -> Bool
- splitKiTyVars :: [TyVar] -> ([KindVar], [TyVar])
- partitionKiTyVars :: [TyVar] -> ([KindVar], [TyVar])
- kiVarsOfKind :: Kind -> VarSet
- kiVarsOfKinds :: [Kind] -> VarSet
- promoteType :: Type -> Kind
- isPromotableType :: Type -> Bool
- isPromotableKind :: Kind -> Maybe Int
Main data type
The key type representing kinds in the compiler. Invariant: a kind is always in one of these forms:
FunTy k1 k2 TyConApp PrimTyCon [...] TyVar kv -- (during inference only) ForAll ... -- (for top-level coercions)
anyKind, constraintKind, ubxTupleKind, argTypeKind, openTypeKind, unliftedTypeKind, liftedTypeKind :: Kind
mkArrowKind :: Kind -> Kind -> Kind
Given two kinds k1 and k2, creates the Kind k1 -> k2
mkArrowKinds :: [Kind] -> Kind -> Kind
Iterated application of mkArrowKind
tySuperKindTyCon, constraintKindTyCon, argTypeKindTyCon, ubxTupleKindTyCon, unliftedTypeKindTyCon, openTypeKindTyCon, liftedTypeKindTyCon, anyKindTyCon :: TyCon
tySuperKind :: SuperKind
pprKind, pprParendKind :: Kind -> SDoc
Deconstructing Kinds
kindFunResult :: Kind -> KindOrType -> Kind
Essentially funResultTy on kinds handling pi-types too
kindAppResult :: Kind -> [Type] -> Kind
synTyConResKind :: TyCon -> Kind
splitKindFunTys :: Kind -> ([Kind], Kind)
Essentially splitFunTys on kinds
splitKindFunTysN :: Int -> Kind -> ([Kind], Kind)
Essentially splitFunTysN on kinds
splitKindFunTy_maybe :: Kind -> Maybe (Kind, Kind)
Predicates on Kinds
isLiftedTypeKind :: Kind -> Bool
isUbxTupleKind, isConstraintOrLiftedKind, isAnyKind, isConstraintKind, isUnliftedTypeKind, isArgTypeKind, isOpenTypeKind :: Kind -> Bool
isSuperKind :: Type -> Bool
Is this a super-kind (i.e. a type-of-kinds)?
noHashInKind :: Kind -> Bool
isLiftedTypeKindCon :: TyCon -> Bool
isSubArgTypeKind, tcIsSubArgTypeKind :: Kind -> Bool
True of any sub-kind of ArgTypeKind
isSubOpenTypeKind, tcIsSubOpenTypeKind :: Kind -> Bool
True of any sub-kind of OpenTypeKind
True of any sub-kind of OpenTypeKind
isSubKind, tcIsSubKind :: Kind -> Kind -> Bool
defaultKind :: Kind -> Kind
Used when generalising: default OpenKind and ArgKind to *. See Type for more information on what that means
isSubKindCon :: TyCon -> TyCon -> Bool
kc1 `isSubKindCon` kc2 checks that kc1 <: kc2
tcIsSubKindCon :: TyCon -> TyCon -> Bool
Functions on variables
splitKiTyVars :: [TyVar] -> ([KindVar], [TyVar])
partitionKiTyVars :: [TyVar] -> ([KindVar], [TyVar])
kiVarsOfKind :: Kind -> VarSet
kiVarsOfKinds :: [Kind] -> VarSet
Promotion related functions
promoteType :: Type -> Kind
Promotes a type to a kind. Assumes the argument is promotable.
isPromotableType :: Type -> Bool
isPromotableKind :: Kind -> Maybe Int