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

nextRole

mkForAllTy

mkForAllTys

splitForAllTy_maybe

splitForAllTys

mkPiKinds

mkPiType

mkPiTypes

applyTy

applyTys

applyTysD

applyTysX

dropForAlls

mkNumLitTy

isNumLitTy

mkStrLitTy

isStrLitTy

coAxNthLHS

newTyConInstRhs

mkFamilyTyConApp

isDictLikeTy

mkEqPred

mkCoerciblePred

mkPrimEqPred

mkReprPrimEqPred

mkClassPred

isClassPred

isEqPred

isIPPred

isIPPred_maybe

isIPTyCon

isIPClass

data PredTree

data EqRel

eqRelRole

classifyPredType

getClassPredTys

getClassPredTys_maybe

getEqPredTys

getEqPredTys_maybe

getEqPredRole

predTypeEqRel

## Common type constructors

funTyCon

## Predicates on types

isTypeVar

isKindVar

allDistinctTyVars

isForAllTy

isTyVarTy

isFunTy

isDictTy

isPredTy

isVoidTy

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

closeOverKinds

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

tyConsOfType

# 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

pprUserForAll

pprSigmaType

pprTheta

pprThetaArrowTy

pprClassPred

pprKind

pprParendKind

pprSourceTyCon

data TyPrec

maybeParen

pprSigmaTypeExtraCts

# Tidying type related things up for printing

tidyType

tidyTypes

tidyOpenType

tidyOpenTypes

tidyOpenKind

tidyTyVarBndr

tidyTyVarBndrs

tidyFreeTyVars

tidyOpenTyVar

tidyOpenTyVars

tidyTyVarOcc

tidyTopType

tidyKind