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

mkNakedAppTys

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

mkNumLitTy

isNumLitTy

mkStrLitTy

isStrLitTy

newTyConInstRhs

carefullySplitNewType_maybe

mkFamilyTyConApp

isDictLikeTy

mkEqPred

mkPrimEqPred

mkClassPred

noParenPred

isClassPred

isEqPred

isIPPred

isIPPred_maybe

data PredTree

predTreePredType

classifyPredType

getClassPredTys

getClassPredTys_maybe

getEqPredTys

getEqPredTys_maybe

## Common type constructors

funTyCon

## Predicates on types

isTypeVar

isKindVar

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

constraintKind

superKind

## Common Kind type constructors

liftedTypeKindTyCon

openTypeKindTyCon

unliftedTypeKindTyCon

constraintKindTyCon

anyKindTyCon

# Type free variables

tyVarsOfType

tyVarsOfTypes

expandTypeSynonyms

typeSize

varSetElemsKvsFirst

# Type comparison

eqType

eqTypeX

eqTypes

cmpType

cmpTypes

eqPred

eqPredX

cmpPred

eqKind

eqTyVarBndrs

# Forcing evaluation of types

seqType

seqTypes

# Other views onto Types

coreView

tcView

type UnaryType

data RepType

flattenRepType

repType

# Type representation for the code generator

typePrimRep

typeRepArity

# 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

pprTvBndr

pprTvBndrs

pprForAll

pprSigmaType

pprEqPred

pprTheta

pprThetaArrowTy

pprClassPred

pprKind

pprParendKind

pprSourceTyCon