Type

# Main data types representing Types

data TyThing

data Type

type KindOrType

type PredType

type ThetaType

data Var

type TyVar

isTyVar

## Constructing and deconstructing types

mkTyVarTy

mkTyVarTys

getTyVar

getTyVar_maybe

mkAppTy

mkAppTys

splitAppTy

splitAppTys

splitAppTy_maybe

repSplitAppTy_maybe

mkFunTy

mkFunTys

splitFunTy

splitFunTy_maybe

splitFunTys

splitFunTysN

funResultTy

funArgTy

zipFunTys

mkTyConApp

mkTyConTy

tyConAppTyCon_maybe

tyConAppArgs_maybe

tyConAppTyCon

tyConAppArgs

splitTyConApp_maybe

splitTyConApp

tyConAppArgN

mkForAllTy

mkForAllTys

splitForAllTy_maybe

splitForAllTys

mkPiKinds

mkPiType

mkPiTypes

applyTy

applyTys

applyTysD

isForAllTy

dropForAlls

newTyConInstRhs

carefullySplitNewType_maybe

mkFamilyTyConApp

isDictLikeTy

mkEqPred

mkClassPred

mkIPPred

noParenPred

isClassPred

isEqPred

isIPPred

mkPrimEqType

data PredTree

predTreePredType

classifyPredType

getClassPredTys

getClassPredTys_maybe

getEqPredTys

getEqPredTys_maybe

getIPPredTy_maybe

## Common type constructors

funTyCon

## Predicates on types

isTyVarTy

isFunTy

isDictTy

isPredTy

isKindTy

isUnLiftedType

isUnboxedTupleType

isAlgType

isClosedAlgType

isPrimitiveType

isStrictType

# Main data types representing Kinds

type Kind

type SimpleKind

type MetaKindVar

## Finding the kind of a type

typeKind

## Common Kinds and SuperKinds

anyKind

liftedTypeKind

unliftedTypeKind

openTypeKind

argTypeKind

ubxTupleKind

constraintKind

tySuperKind

## Common Kind type constructors

liftedTypeKindTyCon

openTypeKindTyCon

unliftedTypeKindTyCon

argTypeKindTyCon

ubxTupleKindTyCon

constraintKindTyCon

anyKindTyCon

# Type free variables

tyVarsOfType

tyVarsOfTypes

expandTypeSynonyms

typeSize

varSetElemsKvsFirst

sortQuantVars

# Type comparison

eqType

eqTypeX

eqTypes

cmpType

cmpTypes

eqPred

eqPredX

cmpPred

eqKind

# Forcing evaluation of types

seqType

seqTypes

# Other views onto Types

coreView

tcView

repType

deepRepType

# Type representation for the code generator

data PrimRep

typePrimRep

# Main type substitution data types

type TvSubstEnv

data TvSubst

## Manipulating type substitutions

emptyTvSubstEnv

emptyTvSubst

mkTvSubst

mkOpenTvSubst

zipOpenTvSubst

zipTopTvSubst

mkTopTvSubst

notElemTvSubst

getTvSubstEnv

setTvSubstEnv

zapTvSubstEnv

getTvInScope

extendTvInScope

extendTvInScopeList

extendTvSubst

extendTvSubstList

isInScope

composeTvSubst

zipTyEnv

isEmptyTvSubst

unionTvSubst

## Performing substitution on types and kinds

substTy

substTys

substTyWith

substTysWith

substTheta

substTyVar

substTyVars

substTyVarBndr

cloneTyVarBndr

deShadowTy

lookupTyVar

substKiWith

substKisWith

# Pretty-printing

pprType

pprParendType

pprTypeApp

pprTyThingCategory

pprTyThing

pprForAll

pprEqPred

pprTheta

pprThetaArrowTy

pprClassPred

pprKind

pprParendKind

pprSourceTyCon