<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!--Rendered using the Haskell Html Library v0.2--> <HTML ><HEAD ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" ><TITLE >TcType</TITLE ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" ><SCRIPT SRC="haddock-util.js" TYPE="text/javascript" ></SCRIPT ><SCRIPT TYPE="text/javascript" >window.onload = function () {setSynopsis("mini_TcType.html")};</SCRIPT ></HEAD ><BODY ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="topbar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title" >ghc-6.12.3: The GHC API</TD ><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD ><TD CLASS="topbut" ><A HREF="doc-index.html" >Index</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="modulebar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><FONT SIZE="6" >TcType</FONT ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Synopsis</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ATcType" >TcType</A > = <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ATcSigmaType" >TcSigmaType</A > = <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ATcRhoType" >TcRhoType</A > = <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ATcTauType" >TcTauType</A > = <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ATcPredType" >TcPredType</A > = <A HREF="TcType.html#t%3APredType" >PredType</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ATcThetaType" >TcThetaType</A > = <A HREF="TcType.html#t%3AThetaType" >ThetaType</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ATcTyVar" >TcTyVar</A > = <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ATcTyVarSet" >TcTyVarSet</A > = <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ATcKind" >TcKind</A > = <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ABoxyTyVar" >BoxyTyVar</A > = <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ABoxySigmaType" >BoxySigmaType</A > = <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ABoxyRhoType" >BoxyRhoType</A > = <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ABoxyThetaType" >BoxyThetaType</A > = <A HREF="TcType.html#t%3ATcThetaType" >TcThetaType</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ABoxyType" >BoxyType</A > = <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AUserTypeCtxt" >UserTypeCtxt</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AFunSigCtxt" >FunSigCtxt</A > <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AExprSigCtxt" >ExprSigCtxt</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AConArgCtxt" >ConArgCtxt</A > <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ATySynCtxt" >TySynCtxt</A > <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AGenPatCtxt" >GenPatCtxt</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ALamPatSigCtxt" >LamPatSigCtxt</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ABindPatSigCtxt" >BindPatSigCtxt</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AResSigCtxt" >ResSigCtxt</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AForSigCtxt" >ForSigCtxt</A > <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ADefaultDeclCtxt" >DefaultDeclCtxt</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ASpecInstCtxt" >SpecInstCtxt</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AThBrackCtxt" >ThBrackCtxt</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprUserTypeCtxt" >pprUserTypeCtxt</A > :: <A HREF="TcType.html#t%3AUserTypeCtxt" >UserTypeCtxt</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ATcTyVarDetails" >TcTyVarDetails</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3ASkolemTv" >SkolemTv</A > <A HREF="TcType.html#t%3ASkolemInfo" >SkolemInfo</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AMetaTv" >MetaTv</A > <A HREF="TcType.html#t%3ABoxInfo" >BoxInfo</A > (<A HREF="IOEnv.html#t%3AIORef" >IORef</A > <A HREF="TcType.html#t%3AMetaDetails" >MetaDetails</A >)</TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ABoxInfo" >BoxInfo</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3ABoxTv" >BoxTv</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ATauTv" >TauTv</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ASigTv" >SigTv</A > <A HREF="TcType.html#t%3ASkolemInfo" >SkolemInfo</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprTcTyVarDetails" >pprTcTyVarDetails</A > :: <A HREF="TcType.html#t%3ATcTyVarDetails" >TcTyVarDetails</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AMetaDetails" >MetaDetails</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AFlexi" >Flexi</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AIndirect" >Indirect</A > <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ASkolemInfo" >SkolemInfo</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3ASigSkol" >SigSkol</A > <A HREF="TcType.html#t%3AUserTypeCtxt" >UserTypeCtxt</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AClsSkol" >ClsSkol</A > <A HREF="Class.html#t%3AClass" >Class</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AInstSkol" >InstSkol</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AFamInstSkol" >FamInstSkol</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3APatSkol" >PatSkol</A > <A HREF="DataCon.html#t%3ADataCon" >DataCon</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AArrowSkol" >ArrowSkol</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARuleSkol" >RuleSkol</A > <A HREF="BasicTypes.html#t%3ARuleName" >RuleName</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AGenSkol" >GenSkol</A > [<A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A >] <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARuntimeUnkSkol" >RuntimeUnkSkol</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AUnkSkol" >UnkSkol</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprSkolTvBinding" >pprSkolTvBinding</A > :: <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprSkolInfo" >pprSkolInfo</A > :: <A HREF="TcType.html#t%3ASkolemInfo" >SkolemInfo</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisImmutableTyVar" >isImmutableTyVar</A > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisSkolemTyVar" >isSkolemTyVar</A > :: <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisMetaTyVar" >isMetaTyVar</A > :: <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisBoxyTyVar" >isBoxyTyVar</A > :: <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisSigTyVar" >isSigTyVar</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisExistentialTyVar" >isExistentialTyVar</A > :: <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisTyConableTyVar" >isTyConableTyVar</A > :: <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmetaTvRef" >metaTvRef</A > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="IOEnv.html#t%3AIORef" >IORef</A > <A HREF="TcType.html#t%3AMetaDetails" >MetaDetails</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFlexi" >isFlexi</A > :: <A HREF="TcType.html#t%3AMetaDetails" >MetaDetails</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisIndirect" >isIndirect</A > :: <A HREF="TcType.html#t%3AMetaDetails" >MetaDetails</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisRuntimeUnk" >isRuntimeUnk</A > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisUnk" >isUnk</A > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkPhiTy" >mkPhiTy</A > :: [<A HREF="TcType.html#t%3APredType" >PredType</A >] -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkSigmaTy" >mkSigmaTy</A > :: [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3APredType" >PredType</A >] -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcView" >tcView</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitForAllTys" >tcSplitForAllTys</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> ([<A HREF="Var.html#t%3ATyVar" >TyVar</A >], <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitPhiTy" >tcSplitPhiTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> (<A HREF="TcType.html#t%3AThetaType" >ThetaType</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitPredFunTy_maybe" >tcSplitPredFunTy_maybe</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="TcType.html#t%3APredType" >PredType</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitFunTy_maybe" >tcSplitFunTy_maybe</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="TcType.html#t%3AType" >Type</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitFunTys" >tcSplitFunTys</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> ([<A HREF="TcType.html#t%3AType" >Type</A >], <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcFunArgTy" >tcFunArgTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcFunResultTy" >tcFunResultTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitFunTysN" >tcSplitFunTysN</A > :: <A HREF="TcType.html#t%3ATcRhoType" >TcRhoType</A > -> <A HREF="BasicTypes.html#t%3AArity" >Arity</A > -> ([<A HREF="TcType.html#t%3ATcSigmaType" >TcSigmaType</A >], <A HREF="TcType.html#t%3ATcSigmaType" >TcSigmaType</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitTyConApp" >tcSplitTyConApp</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> (<A HREF="TyCon.html#t%3ATyCon" >TyCon</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitTyConApp_maybe" >tcSplitTyConApp_maybe</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="TyCon.html#t%3ATyCon" >TyCon</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcTyConAppTyCon" >tcTyConAppTyCon</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TyCon.html#t%3ATyCon" >TyCon</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcTyConAppArgs" >tcTyConAppArgs</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitAppTy_maybe" >tcSplitAppTy_maybe</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="TcType.html#t%3AType" >Type</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitAppTy" >tcSplitAppTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> (<A HREF="TcType.html#t%3AType" >Type</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitAppTys" >tcSplitAppTys</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> (<A HREF="TcType.html#t%3AType" >Type</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ArepSplitAppTy_maybe" >repSplitAppTy_maybe</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="TcType.html#t%3AType" >Type</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcInstHeadTyNotSynonym" >tcInstHeadTyNotSynonym</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcInstHeadTyAppAllTyVars" >tcInstHeadTyAppAllTyVars</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcGetTyVar_maybe" >tcGetTyVar_maybe</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcGetTyVar" >tcGetTyVar</A > :: <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitSigmaTy" >tcSplitSigmaTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> ([<A HREF="Var.html#t%3ATyVar" >TyVar</A >], <A HREF="TcType.html#t%3AThetaType" >ThetaType</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcMultiSplitSigmaTy" >tcMultiSplitSigmaTy</A > :: <A HREF="TcType.html#t%3ATcSigmaType" >TcSigmaType</A > -> ([([<A HREF="Var.html#t%3ATyVar" >TyVar</A >], <A HREF="TcType.html#t%3AThetaType" >ThetaType</A >)], <A HREF="TcType.html#t%3ATcSigmaType" >TcSigmaType</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcEqType" >tcEqType</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcEqTypes" >tcEqTypes</A > :: [<A HREF="TcType.html#t%3AType" >Type</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcEqPred" >tcEqPred</A > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcCmpType" >tcCmpType</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Ord.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcCmpTypes" >tcCmpTypes</A > :: [<A HREF="TcType.html#t%3AType" >Type</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="../base-4.2.0.2/Data-Ord.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcCmpPred" >tcCmpPred</A > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Ord.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcEqTypeX" >tcEqTypeX</A > :: <A HREF="VarEnv.html#t%3ARnEnv2" >RnEnv2</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AeqKind" >eqKind</A > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisSigmaTy" >isSigmaTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisOverloadedTy" >isOverloadedTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisRigidTy" >isRigidTy</A > :: <A HREF="TcType.html#t%3ATcType" >TcType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisBoxyTy" >isBoxyTy</A > :: <A HREF="TcType.html#t%3ATcType" >TcType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisDoubleTy" >isDoubleTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFloatTy" >isFloatTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisIntTy" >isIntTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisWordTy" >isWordTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisStringTy" >isStringTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisIntegerTy" >isIntegerTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisBoolTy" >isBoolTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisUnitTy" >isUnitTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisCharTy" >isCharTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisTauTy" >isTauTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisTauTyCon" >isTauTyCon</A > :: <A HREF="TyCon.html#t%3ATyCon" >TyCon</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcIsTyVarTy" >tcIsTyVarTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcIsForAllTy" >tcIsForAllTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisOpenSynTyConApp" >isOpenSynTyConApp</A > :: <A HREF="TcType.html#t%3ATcTauType" >TcTauType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AdeNoteType" >deNoteType</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtyClsNamesOfType" >tyClsNamesOfType</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="NameSet.html#t%3ANameSet" >NameSet</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtyClsNamesOfDFunHead" >tyClsNamesOfDFunHead</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="NameSet.html#t%3ANameSet" >NameSet</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetDFunTyKey" >getDFunTyKey</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="OccName.html#t%3AOccName" >OccName</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetClassPredTys_maybe" >getClassPredTys_maybe</A > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="Class.html#t%3AClass" >Class</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetClassPredTys" >getClassPredTys</A > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> (<A HREF="Class.html#t%3AClass" >Class</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisClassPred" >isClassPred</A > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisTyVarClassPred" >isTyVarClassPred</A > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisEqPred" >isEqPred</A > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkDictTy" >mkDictTy</A > :: <A HREF="Class.html#t%3AClass" >Class</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitPredTy_maybe" >tcSplitPredTy_maybe</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="TcType.html#t%3APredType" >PredType</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisPredTy" >isPredTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisDictTy" >isDictTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisDictLikeTy" >isDictLikeTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitDFunTy" >tcSplitDFunTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> ([<A HREF="Var.html#t%3ATyVar" >TyVar</A >], [<A HREF="TcType.html#t%3APredType" >PredType</A >], <A HREF="Class.html#t%3AClass" >Class</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitDFunHead" >tcSplitDFunHead</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> (<A HREF="Class.html#t%3AClass" >Class</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApredTyUnique" >predTyUnique</A > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="Unique.html#t%3AUnique" >Unique</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkClassPred" >mkClassPred</A > :: <A HREF="Class.html#t%3AClass" >Class</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3APredType" >PredType</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisInheritablePred" >isInheritablePred</A > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisIPPred" >isIPPred</A > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisRefineableTy" >isRefineableTy</A > :: <A HREF="TcType.html#t%3ATcType" >TcType</A > -> (<A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >, <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisRefineablePred" >isRefineablePred</A > :: <A HREF="TcType.html#t%3ATcPredType" >TcPredType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFFIArgumentTy" >isFFIArgumentTy</A > :: <A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A > -> <A HREF="ForeignCall.html#t%3ASafety" >Safety</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFFIImportResultTy" >isFFIImportResultTy</A > :: <A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFFIExportResultTy" >isFFIExportResultTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFFIExternalTy" >isFFIExternalTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFFIDynArgumentTy" >isFFIDynArgumentTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFFIDynResultTy" >isFFIDynResultTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFFIPrimArgumentTy" >isFFIPrimArgumentTy</A > :: <A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFFIPrimResultTy" >isFFIPrimResultTy</A > :: <A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFFILabelTy" >isFFILabelTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFFIDotnetTy" >isFFIDotnetTy</A > :: <A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFFIDotnetObjTy" >isFFIDotnetObjTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFFITy" >isFFITy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisFunPtrTy" >isFunPtrTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcSplitIOType_maybe" >tcSplitIOType_maybe</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="TyCon.html#t%3ATyCon" >TyCon</A >, <A HREF="TcType.html#t%3AType" >Type</A >, <A HREF="Coercion.html#t%3ACoercionI" >CoercionI</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3AKind" >Kind</A > = <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AunliftedTypeKind" >unliftedTypeKind</A > :: <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AliftedTypeKind" >liftedTypeKind</A > :: <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AargTypeKind" >argTypeKind</A > :: <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AopenTypeKind" >openTypeKind</A > :: <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkArrowKind" >mkArrowKind</A > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkArrowKinds" >mkArrowKinds</A > :: [<A HREF="TcType.html#t%3AKind" >Kind</A >] -> <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisLiftedTypeKind" >isLiftedTypeKind</A > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisUnliftedTypeKind" >isUnliftedTypeKind</A > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisSubOpenTypeKind" >isSubOpenTypeKind</A > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisSubArgTypeKind" >isSubArgTypeKind</A > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisSubKind" >isSubKind</A > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsplitKindFunTys" >splitKindFunTys</A > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> ([<A HREF="TcType.html#t%3AKind" >Kind</A >], <A HREF="TcType.html#t%3AKind" >Kind</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AdefaultKind" >defaultKind</A > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AkindVarRef" >kindVarRef</A > :: <A HREF="Type.html#t%3AKindVar" >KindVar</A > -> <A HREF="IOEnv.html#t%3AIORef" >IORef</A > <A HREF="TcType.html#t%3AMetaDetails" >MetaDetails</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkKindVar" >mkKindVar</A > :: <A HREF="Unique.html#t%3AUnique" >Unique</A > -> <A HREF="IOEnv.html#t%3AIORef" >IORef</A > <A HREF="TcType.html#t%3AMetaDetails" >MetaDetails</A > -> <A HREF="Type.html#t%3AKindVar" >KindVar</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AType" >Type</A > </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3APredType" >PredType</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3AClassP" >ClassP</A > <A HREF="Class.html#t%3AClass" >Class</A > [<A HREF="TcType.html#t%3AType" >Type</A >]</TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AIParam" >IParam</A > (<A HREF="BasicTypes.html#t%3AIPName" >IPName</A > <A HREF="Name.html#t%3AName" >Name</A >) <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3AEqPred" >EqPred</A > <A HREF="TcType.html#t%3AType" >Type</A > <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3AThetaType" >ThetaType</A > = [<A HREF="TcType.html#t%3APredType" >PredType</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkForAllTy" >mkForAllTy</A > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkForAllTys" >mkForAllTys</A > :: [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkFunTy" >mkFunTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkFunTys" >mkFunTys</A > :: [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzipFunTys" >zipFunTys</A > :: <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > a => [a] -> <A HREF="TcType.html#t%3AType" >Type</A > -> ([(a, <A HREF="TcType.html#t%3AType" >Type</A >)], <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkTyConApp" >mkTyConApp</A > :: <A HREF="TyCon.html#t%3ATyCon" >TyCon</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkAppTy" >mkAppTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkAppTys" >mkAppTys</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AapplyTy" >applyTy</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AapplyTys" >applyTys</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkTyVarTy" >mkTyVarTy</A > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkTyVarTys" >mkTyVarTys</A > :: [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkTyConTy" >mkTyConTy</A > :: <A HREF="TyCon.html#t%3ATyCon" >TyCon</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkPredTy" >mkPredTy</A > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkPredTys" >mkPredTys</A > :: <A HREF="TcType.html#t%3AThetaType" >ThetaType</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ATvSubst" >TvSubst</A > = <A HREF="#v%3ATvSubst" >TvSubst</A > <A HREF="VarEnv.html#t%3AInScopeSet" >InScopeSet</A > <A HREF="TcType.html#t%3ATvSubstEnv" >TvSubstEnv</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ATvSubstEnv" >TvSubstEnv</A > = <A HREF="VarEnv.html#t%3ATyVarEnv" >TyVarEnv</A > <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AemptyTvSubst" >emptyTvSubst</A > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsubstEqSpec" >substEqSpec</A > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> [(<A HREF="Var.html#t%3ATyVar" >TyVar</A >, <A HREF="TcType.html#t%3AType" >Type</A >)] -> [(<A HREF="TcType.html#t%3ATcType" >TcType</A >, <A HREF="TcType.html#t%3ATcType" >TcType</A >)]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkOpenTvSubst" >mkOpenTvSubst</A > :: <A HREF="TcType.html#t%3ATvSubstEnv" >TvSubstEnv</A > -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzipOpenTvSubst" >zipOpenTvSubst</A > :: [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzipTopTvSubst" >zipTopTvSubst</A > :: [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkTopTvSubst" >mkTopTvSubst</A > :: [(<A HREF="Var.html#t%3ATyVar" >TyVar</A >, <A HREF="TcType.html#t%3AType" >Type</A >)] -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AnotElemTvSubst" >notElemTvSubst</A > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetTvSubstEnv" >getTvSubstEnv</A > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="TcType.html#t%3ATvSubstEnv" >TvSubstEnv</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetTvSubstEnv" >setTvSubstEnv</A > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="TcType.html#t%3ATvSubstEnv" >TvSubstEnv</A > -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgetTvInScope" >getTvInScope</A > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="VarEnv.html#t%3AInScopeSet" >InScopeSet</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AextendTvInScope" >extendTvInScope</A > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> [<A HREF="Var.html#t%3AVar" >Var</A >] -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AlookupTyVar" >lookupTyVar</A > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AextendTvSubst" >extendTvSubst</A > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AextendTvSubstList" >extendTvSubstList</A > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisInScope" >isInScope</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkTvSubst" >mkTvSubst</A > :: <A HREF="VarEnv.html#t%3AInScopeSet" >InScopeSet</A > -> <A HREF="TcType.html#t%3ATvSubstEnv" >TvSubstEnv</A > -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzipTyEnv" >zipTyEnv</A > :: [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3ATvSubstEnv" >TvSubstEnv</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsubstTy" >substTy</A > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsubstTys" >substTys</A > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsubstTyWith" >substTyWith</A > :: [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsubstTheta" >substTheta</A > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="TcType.html#t%3AThetaType" >ThetaType</A > -> <A HREF="TcType.html#t%3AThetaType" >ThetaType</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsubstTyVar" >substTyVar</A > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsubstTyVars" >substTyVars</A > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsubstTyVarBndr" >substTyVarBndr</A > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> (<A HREF="TcType.html#t%3ATvSubst" >TvSubst</A >, <A HREF="Var.html#t%3ATyVar" >TyVar</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisUnLiftedType" >isUnLiftedType</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisUnboxedTupleType" >isUnboxedTupleType</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisPrimitiveType" >isPrimitiveType</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtidyTopType" >tidyTopType</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtidyType" >tidyType</A > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtidyPred" >tidyPred</A > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="TcType.html#t%3APredType" >PredType</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtidyTypes" >tidyTypes</A > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtidyFreeTyVars" >tidyFreeTyVars</A > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A > -> <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtidyOpenType" >tidyOpenType</A > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> (<A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtidyOpenTypes" >tidyOpenTypes</A > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> (<A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtidyTyVarBndr" >tidyTyVarBndr</A > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> (<A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A >, <A HREF="Var.html#t%3ATyVar" >TyVar</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtidyOpenTyVar" >tidyOpenTyVar</A > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> (<A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A >, <A HREF="Var.html#t%3ATyVar" >TyVar</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtidyOpenTyVars" >tidyOpenTyVars</A > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> (<A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A >, [<A HREF="Var.html#t%3ATyVar" >TyVar</A >])</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtidySkolemTyVar" >tidySkolemTyVar</A > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A > -> (<A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A >, <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtypeKind" >typeKind</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtidyKind" >tidyKind</A > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A > -> (<A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A >, <A HREF="TcType.html#t%3AKind" >Kind</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtyVarsOfType" >tyVarsOfType</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtyVarsOfTypes" >tyVarsOfTypes</A > :: [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtyVarsOfPred" >tyVarsOfPred</A > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtyVarsOfTheta" >tyVarsOfTheta</A > :: <A HREF="TcType.html#t%3AThetaType" >ThetaType</A > -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcTyVarsOfType" >tcTyVarsOfType</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3ATcTyVarSet" >TcTyVarSet</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcTyVarsOfTypes" >tcTyVarsOfTypes</A > :: [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcTyVarsOfPred" >tcTyVarsOfPred</A > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AexactTyVarsOfType" >exactTyVarsOfType</A > :: <A HREF="TcType.html#t%3ATcType" >TcType</A > -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AexactTyVarsOfTypes" >exactTyVarsOfTypes</A > :: [<A HREF="TcType.html#t%3ATcType" >TcType</A >] -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprKind" >pprKind</A > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprParendKind" >pprParendKind</A > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprType" >pprType</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprParendType" >pprParendType</A > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprTypeApp" >pprTypeApp</A > :: <A HREF="Name.html#t%3ANamedThing" >NamedThing</A > a => a -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprTyThingCategory" >pprTyThingCategory</A > :: <A HREF="Type.html#t%3ATyThing" >TyThing</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprPred" >pprPred</A > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprTheta" >pprTheta</A > :: <A HREF="TcType.html#t%3AThetaType" >ThetaType</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprThetaArrow" >pprThetaArrow</A > :: <A HREF="TcType.html#t%3AThetaType" >ThetaType</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApprClassPred" >pprClassPred</A > :: <A HREF="Class.html#t%3AClass" >Class</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Documentation</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:TcType" ><A NAME="t%3ATcType" ></A ></A ><B >TcType</B > = <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:TcSigmaType" ><A NAME="t%3ATcSigmaType" ></A ></A ><B >TcSigmaType</B > = <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:TcRhoType" ><A NAME="t%3ATcRhoType" ></A ></A ><B >TcRhoType</B > = <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:TcTauType" ><A NAME="t%3ATcTauType" ></A ></A ><B >TcTauType</B > = <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:TcPredType" ><A NAME="t%3ATcPredType" ></A ></A ><B >TcPredType</B > = <A HREF="TcType.html#t%3APredType" >PredType</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:TcThetaType" ><A NAME="t%3ATcThetaType" ></A ></A ><B >TcThetaType</B > = <A HREF="TcType.html#t%3AThetaType" >ThetaType</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:TcTyVar" ><A NAME="t%3ATcTyVar" ></A ></A ><B >TcTyVar</B > = <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:TcTyVarSet" ><A NAME="t%3ATcTyVarSet" ></A ></A ><B >TcTyVarSet</B > = <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:TcKind" ><A NAME="t%3ATcKind" ></A ></A ><B >TcKind</B > = <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:BoxyTyVar" ><A NAME="t%3ABoxyTyVar" ></A ></A ><B >BoxyTyVar</B > = <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:BoxySigmaType" ><A NAME="t%3ABoxySigmaType" ></A ></A ><B >BoxySigmaType</B > = <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:BoxyRhoType" ><A NAME="t%3ABoxyRhoType" ></A ></A ><B >BoxyRhoType</B > = <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:BoxyThetaType" ><A NAME="t%3ABoxyThetaType" ></A ></A ><B >BoxyThetaType</B > = <A HREF="TcType.html#t%3ATcThetaType" >TcThetaType</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:BoxyType" ><A NAME="t%3ABoxyType" ></A ></A ><B >BoxyType</B > = <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:UserTypeCtxt" ><A NAME="t%3AUserTypeCtxt" ></A ></A ><B >UserTypeCtxt</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:FunSigCtxt" ><A NAME="v%3AFunSigCtxt" ></A ></A ><B >FunSigCtxt</B > <A HREF="Name.html#t%3AName" >Name</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ExprSigCtxt" ><A NAME="v%3AExprSigCtxt" ></A ></A ><B >ExprSigCtxt</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ConArgCtxt" ><A NAME="v%3AConArgCtxt" ></A ></A ><B >ConArgCtxt</B > <A HREF="Name.html#t%3AName" >Name</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:TySynCtxt" ><A NAME="v%3ATySynCtxt" ></A ></A ><B >TySynCtxt</B > <A HREF="Name.html#t%3AName" >Name</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:GenPatCtxt" ><A NAME="v%3AGenPatCtxt" ></A ></A ><B >GenPatCtxt</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:LamPatSigCtxt" ><A NAME="v%3ALamPatSigCtxt" ></A ></A ><B >LamPatSigCtxt</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:BindPatSigCtxt" ><A NAME="v%3ABindPatSigCtxt" ></A ></A ><B >BindPatSigCtxt</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ResSigCtxt" ><A NAME="v%3AResSigCtxt" ></A ></A ><B >ResSigCtxt</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ForSigCtxt" ><A NAME="v%3AForSigCtxt" ></A ></A ><B >ForSigCtxt</B > <A HREF="Name.html#t%3AName" >Name</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:DefaultDeclCtxt" ><A NAME="v%3ADefaultDeclCtxt" ></A ></A ><B >DefaultDeclCtxt</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:SpecInstCtxt" ><A NAME="v%3ASpecInstCtxt" ></A ></A ><B >SpecInstCtxt</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ThBrackCtxt" ><A NAME="v%3AThBrackCtxt" ></A ></A ><B >ThBrackCtxt</B ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprUserTypeCtxt" ><A NAME="v%3ApprUserTypeCtxt" ></A ></A ><B >pprUserTypeCtxt</B > :: <A HREF="TcType.html#t%3AUserTypeCtxt" >UserTypeCtxt</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:TcTyVarDetails" ><A NAME="t%3ATcTyVarDetails" ></A ></A ><B >TcTyVarDetails</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:SkolemTv" ><A NAME="v%3ASkolemTv" ></A ></A ><B >SkolemTv</B > <A HREF="TcType.html#t%3ASkolemInfo" >SkolemInfo</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:MetaTv" ><A NAME="v%3AMetaTv" ></A ></A ><B >MetaTv</B > <A HREF="TcType.html#t%3ABoxInfo" >BoxInfo</A > (<A HREF="IOEnv.html#t%3AIORef" >IORef</A > <A HREF="TcType.html#t%3AMetaDetails" >MetaDetails</A >)</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:BoxInfo" ><A NAME="t%3ABoxInfo" ></A ></A ><B >BoxInfo</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:BoxTv" ><A NAME="v%3ABoxTv" ></A ></A ><B >BoxTv</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:TauTv" ><A NAME="v%3ATauTv" ></A ></A ><B >TauTv</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:SigTv" ><A NAME="v%3ASigTv" ></A ></A ><B >SigTv</B > <A HREF="TcType.html#t%3ASkolemInfo" >SkolemInfo</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprTcTyVarDetails" ><A NAME="v%3ApprTcTyVarDetails" ></A ></A ><B >pprTcTyVarDetails</B > :: <A HREF="TcType.html#t%3ATcTyVarDetails" >TcTyVarDetails</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:MetaDetails" ><A NAME="t%3AMetaDetails" ></A ></A ><B >MetaDetails</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:Flexi" ><A NAME="v%3AFlexi" ></A ></A ><B >Flexi</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:Indirect" ><A NAME="v%3AIndirect" ></A ></A ><B >Indirect</B > <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:MetaDetails')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:MetaDetails" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Outputable.html#t%3AOutputable" >Outputable</A > <A HREF="TcType.html#t%3AMetaDetails" >MetaDetails</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:SkolemInfo" ><A NAME="t%3ASkolemInfo" ></A ></A ><B >SkolemInfo</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:SigSkol" ><A NAME="v%3ASigSkol" ></A ></A ><B >SigSkol</B > <A HREF="TcType.html#t%3AUserTypeCtxt" >UserTypeCtxt</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ClsSkol" ><A NAME="v%3AClsSkol" ></A ></A ><B >ClsSkol</B > <A HREF="Class.html#t%3AClass" >Class</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:InstSkol" ><A NAME="v%3AInstSkol" ></A ></A ><B >InstSkol</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:FamInstSkol" ><A NAME="v%3AFamInstSkol" ></A ></A ><B >FamInstSkol</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:PatSkol" ><A NAME="v%3APatSkol" ></A ></A ><B >PatSkol</B > <A HREF="DataCon.html#t%3ADataCon" >DataCon</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ArrowSkol" ><A NAME="v%3AArrowSkol" ></A ></A ><B >ArrowSkol</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:RuleSkol" ><A NAME="v%3ARuleSkol" ></A ></A ><B >RuleSkol</B > <A HREF="BasicTypes.html#t%3ARuleName" >RuleName</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:GenSkol" ><A NAME="v%3AGenSkol" ></A ></A ><B >GenSkol</B > [<A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A >] <A HREF="TcType.html#t%3ATcType" >TcType</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:RuntimeUnkSkol" ><A NAME="v%3ARuntimeUnkSkol" ></A ></A ><B >RuntimeUnkSkol</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:UnkSkol" ><A NAME="v%3AUnkSkol" ></A ></A ><B >UnkSkol</B ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprSkolTvBinding" ><A NAME="v%3ApprSkolTvBinding" ></A ></A ><B >pprSkolTvBinding</B > :: <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprSkolInfo" ><A NAME="v%3ApprSkolInfo" ></A ></A ><B >pprSkolInfo</B > :: <A HREF="TcType.html#t%3ASkolemInfo" >SkolemInfo</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isImmutableTyVar" ><A NAME="v%3AisImmutableTyVar" ></A ></A ><B >isImmutableTyVar</B > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isSkolemTyVar" ><A NAME="v%3AisSkolemTyVar" ></A ></A ><B >isSkolemTyVar</B > :: <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isMetaTyVar" ><A NAME="v%3AisMetaTyVar" ></A ></A ><B >isMetaTyVar</B > :: <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isBoxyTyVar" ><A NAME="v%3AisBoxyTyVar" ></A ></A ><B >isBoxyTyVar</B > :: <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isSigTyVar" ><A NAME="v%3AisSigTyVar" ></A ></A ><B >isSigTyVar</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isExistentialTyVar" ><A NAME="v%3AisExistentialTyVar" ></A ></A ><B >isExistentialTyVar</B > :: <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isTyConableTyVar" ><A NAME="v%3AisTyConableTyVar" ></A ></A ><B >isTyConableTyVar</B > :: <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:metaTvRef" ><A NAME="v%3AmetaTvRef" ></A ></A ><B >metaTvRef</B > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="IOEnv.html#t%3AIORef" >IORef</A > <A HREF="TcType.html#t%3AMetaDetails" >MetaDetails</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFlexi" ><A NAME="v%3AisFlexi" ></A ></A ><B >isFlexi</B > :: <A HREF="TcType.html#t%3AMetaDetails" >MetaDetails</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isIndirect" ><A NAME="v%3AisIndirect" ></A ></A ><B >isIndirect</B > :: <A HREF="TcType.html#t%3AMetaDetails" >MetaDetails</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isRuntimeUnk" ><A NAME="v%3AisRuntimeUnk" ></A ></A ><B >isRuntimeUnk</B > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isUnk" ><A NAME="v%3AisUnk" ></A ></A ><B >isUnk</B > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkPhiTy" ><A NAME="v%3AmkPhiTy" ></A ></A ><B >mkPhiTy</B > :: [<A HREF="TcType.html#t%3APredType" >PredType</A >] -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkSigmaTy" ><A NAME="v%3AmkSigmaTy" ></A ></A ><B >mkSigmaTy</B > :: [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3APredType" >PredType</A >] -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcView" ><A NAME="v%3AtcView" ></A ></A ><B >tcView</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="doc" >Similar to <TT ><A HREF="Type.html#v%3AcoreView" >coreView</A ></TT >, but for the type checker, which just looks through synonyms </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitForAllTys" ><A NAME="v%3AtcSplitForAllTys" ></A ></A ><B >tcSplitForAllTys</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> ([<A HREF="Var.html#t%3ATyVar" >TyVar</A >], <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitPhiTy" ><A NAME="v%3AtcSplitPhiTy" ></A ></A ><B >tcSplitPhiTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> (<A HREF="TcType.html#t%3AThetaType" >ThetaType</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitPredFunTy_maybe" ><A NAME="v%3AtcSplitPredFunTy_maybe" ></A ></A ><B >tcSplitPredFunTy_maybe</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="TcType.html#t%3APredType" >PredType</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitFunTy_maybe" ><A NAME="v%3AtcSplitFunTy_maybe" ></A ></A ><B >tcSplitFunTy_maybe</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="TcType.html#t%3AType" >Type</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitFunTys" ><A NAME="v%3AtcSplitFunTys" ></A ></A ><B >tcSplitFunTys</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> ([<A HREF="TcType.html#t%3AType" >Type</A >], <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcFunArgTy" ><A NAME="v%3AtcFunArgTy" ></A ></A ><B >tcFunArgTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcFunResultTy" ><A NAME="v%3AtcFunResultTy" ></A ></A ><B >tcFunResultTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitFunTysN" ><A NAME="v%3AtcSplitFunTysN" ></A ></A ><B >tcSplitFunTysN</B > :: <A HREF="TcType.html#t%3ATcRhoType" >TcRhoType</A > -> <A HREF="BasicTypes.html#t%3AArity" >Arity</A > -> ([<A HREF="TcType.html#t%3ATcSigmaType" >TcSigmaType</A >], <A HREF="TcType.html#t%3ATcSigmaType" >TcSigmaType</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitTyConApp" ><A NAME="v%3AtcSplitTyConApp" ></A ></A ><B >tcSplitTyConApp</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> (<A HREF="TyCon.html#t%3ATyCon" >TyCon</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitTyConApp_maybe" ><A NAME="v%3AtcSplitTyConApp_maybe" ></A ></A ><B >tcSplitTyConApp_maybe</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="TyCon.html#t%3ATyCon" >TyCon</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcTyConAppTyCon" ><A NAME="v%3AtcTyConAppTyCon" ></A ></A ><B >tcTyConAppTyCon</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TyCon.html#t%3ATyCon" >TyCon</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcTyConAppArgs" ><A NAME="v%3AtcTyConAppArgs" ></A ></A ><B >tcTyConAppArgs</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitAppTy_maybe" ><A NAME="v%3AtcSplitAppTy_maybe" ></A ></A ><B >tcSplitAppTy_maybe</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="TcType.html#t%3AType" >Type</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitAppTy" ><A NAME="v%3AtcSplitAppTy" ></A ></A ><B >tcSplitAppTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> (<A HREF="TcType.html#t%3AType" >Type</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitAppTys" ><A NAME="v%3AtcSplitAppTys" ></A ></A ><B >tcSplitAppTys</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> (<A HREF="TcType.html#t%3AType" >Type</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:repSplitAppTy_maybe" ><A NAME="v%3ArepSplitAppTy_maybe" ></A ></A ><B >repSplitAppTy_maybe</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="TcType.html#t%3AType" >Type</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="doc" >Does the AppTy split as in <TT ><A HREF="Type.html#v%3AsplitAppTy_maybe" >splitAppTy_maybe</A ></TT >, but assumes that any Core view stuff is already done </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcInstHeadTyNotSynonym" ><A NAME="v%3AtcInstHeadTyNotSynonym" ></A ></A ><B >tcInstHeadTyNotSynonym</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcInstHeadTyAppAllTyVars" ><A NAME="v%3AtcInstHeadTyAppAllTyVars" ></A ></A ><B >tcInstHeadTyAppAllTyVars</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcGetTyVar_maybe" ><A NAME="v%3AtcGetTyVar_maybe" ></A ></A ><B >tcGetTyVar_maybe</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcGetTyVar" ><A NAME="v%3AtcGetTyVar" ></A ></A ><B >tcGetTyVar</B > :: <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitSigmaTy" ><A NAME="v%3AtcSplitSigmaTy" ></A ></A ><B >tcSplitSigmaTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> ([<A HREF="Var.html#t%3ATyVar" >TyVar</A >], <A HREF="TcType.html#t%3AThetaType" >ThetaType</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcMultiSplitSigmaTy" ><A NAME="v%3AtcMultiSplitSigmaTy" ></A ></A ><B >tcMultiSplitSigmaTy</B > :: <A HREF="TcType.html#t%3ATcSigmaType" >TcSigmaType</A > -> ([([<A HREF="Var.html#t%3ATyVar" >TyVar</A >], <A HREF="TcType.html#t%3AThetaType" >ThetaType</A >)], <A HREF="TcType.html#t%3ATcSigmaType" >TcSigmaType</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcEqType" ><A NAME="v%3AtcEqType" ></A ></A ><B >tcEqType</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >Type equality on source types. Does not look through <TT >newtypes</TT > or <TT ><A HREF="TcType.html#t%3APredType" >PredType</A ></TT >s, but it does look through type synonyms. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcEqTypes" ><A NAME="v%3AtcEqTypes" ></A ></A ><B >tcEqTypes</B > :: [<A HREF="TcType.html#t%3AType" >Type</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcEqPred" ><A NAME="v%3AtcEqPred" ></A ></A ><B >tcEqPred</B > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcCmpType" ><A NAME="v%3AtcCmpType" ></A ></A ><B >tcCmpType</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Ord.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="doc" >Type ordering on source types. Does not look through <TT >newtypes</TT > or <TT ><A HREF="TcType.html#t%3APredType" >PredType</A ></TT >s, but it does look through type synonyms. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcCmpTypes" ><A NAME="v%3AtcCmpTypes" ></A ></A ><B >tcCmpTypes</B > :: [<A HREF="TcType.html#t%3AType" >Type</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="../base-4.2.0.2/Data-Ord.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcCmpPred" ><A NAME="v%3AtcCmpPred" ></A ></A ><B >tcCmpPred</B > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Ord.html#t%3AOrdering" >Ordering</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcEqTypeX" ><A NAME="v%3AtcEqTypeX" ></A ></A ><B >tcEqTypeX</B > :: <A HREF="VarEnv.html#t%3ARnEnv2" >RnEnv2</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:eqKind" ><A NAME="v%3AeqKind" ></A ></A ><B >eqKind</B > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isSigmaTy" ><A NAME="v%3AisSigmaTy" ></A ></A ><B >isSigmaTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isOverloadedTy" ><A NAME="v%3AisOverloadedTy" ></A ></A ><B >isOverloadedTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isRigidTy" ><A NAME="v%3AisRigidTy" ></A ></A ><B >isRigidTy</B > :: <A HREF="TcType.html#t%3ATcType" >TcType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isBoxyTy" ><A NAME="v%3AisBoxyTy" ></A ></A ><B >isBoxyTy</B > :: <A HREF="TcType.html#t%3ATcType" >TcType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isDoubleTy" ><A NAME="v%3AisDoubleTy" ></A ></A ><B >isDoubleTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFloatTy" ><A NAME="v%3AisFloatTy" ></A ></A ><B >isFloatTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isIntTy" ><A NAME="v%3AisIntTy" ></A ></A ><B >isIntTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isWordTy" ><A NAME="v%3AisWordTy" ></A ></A ><B >isWordTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isStringTy" ><A NAME="v%3AisStringTy" ></A ></A ><B >isStringTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isIntegerTy" ><A NAME="v%3AisIntegerTy" ></A ></A ><B >isIntegerTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isBoolTy" ><A NAME="v%3AisBoolTy" ></A ></A ><B >isBoolTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isUnitTy" ><A NAME="v%3AisUnitTy" ></A ></A ><B >isUnitTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isCharTy" ><A NAME="v%3AisCharTy" ></A ></A ><B >isCharTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isTauTy" ><A NAME="v%3AisTauTy" ></A ></A ><B >isTauTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isTauTyCon" ><A NAME="v%3AisTauTyCon" ></A ></A ><B >isTauTyCon</B > :: <A HREF="TyCon.html#t%3ATyCon" >TyCon</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcIsTyVarTy" ><A NAME="v%3AtcIsTyVarTy" ></A ></A ><B >tcIsTyVarTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcIsForAllTy" ><A NAME="v%3AtcIsForAllTy" ></A ></A ><B >tcIsForAllTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isOpenSynTyConApp" ><A NAME="v%3AisOpenSynTyConApp" ></A ></A ><B >isOpenSynTyConApp</B > :: <A HREF="TcType.html#t%3ATcTauType" >TcTauType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:deNoteType" ><A NAME="v%3AdeNoteType" ></A ></A ><B >deNoteType</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tyClsNamesOfType" ><A NAME="v%3AtyClsNamesOfType" ></A ></A ><B >tyClsNamesOfType</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="NameSet.html#t%3ANameSet" >NameSet</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tyClsNamesOfDFunHead" ><A NAME="v%3AtyClsNamesOfDFunHead" ></A ></A ><B >tyClsNamesOfDFunHead</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="NameSet.html#t%3ANameSet" >NameSet</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getDFunTyKey" ><A NAME="v%3AgetDFunTyKey" ></A ></A ><B >getDFunTyKey</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="OccName.html#t%3AOccName" >OccName</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getClassPredTys_maybe" ><A NAME="v%3AgetClassPredTys_maybe" ></A ></A ><B >getClassPredTys_maybe</B > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="Class.html#t%3AClass" >Class</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getClassPredTys" ><A NAME="v%3AgetClassPredTys" ></A ></A ><B >getClassPredTys</B > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> (<A HREF="Class.html#t%3AClass" >Class</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isClassPred" ><A NAME="v%3AisClassPred" ></A ></A ><B >isClassPred</B > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isTyVarClassPred" ><A NAME="v%3AisTyVarClassPred" ></A ></A ><B >isTyVarClassPred</B > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isEqPred" ><A NAME="v%3AisEqPred" ></A ></A ><B >isEqPred</B > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkDictTy" ><A NAME="v%3AmkDictTy" ></A ></A ><B >mkDictTy</B > :: <A HREF="Class.html#t%3AClass" >Class</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitPredTy_maybe" ><A NAME="v%3AtcSplitPredTy_maybe" ></A ></A ><B >tcSplitPredTy_maybe</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="TcType.html#t%3APredType" >PredType</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isPredTy" ><A NAME="v%3AisPredTy" ></A ></A ><B >isPredTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isDictTy" ><A NAME="v%3AisDictTy" ></A ></A ><B >isDictTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isDictLikeTy" ><A NAME="v%3AisDictLikeTy" ></A ></A ><B >isDictLikeTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitDFunTy" ><A NAME="v%3AtcSplitDFunTy" ></A ></A ><B >tcSplitDFunTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> ([<A HREF="Var.html#t%3ATyVar" >TyVar</A >], [<A HREF="TcType.html#t%3APredType" >PredType</A >], <A HREF="Class.html#t%3AClass" >Class</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitDFunHead" ><A NAME="v%3AtcSplitDFunHead" ></A ></A ><B >tcSplitDFunHead</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> (<A HREF="Class.html#t%3AClass" >Class</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:predTyUnique" ><A NAME="v%3ApredTyUnique" ></A ></A ><B >predTyUnique</B > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="Unique.html#t%3AUnique" >Unique</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkClassPred" ><A NAME="v%3AmkClassPred" ></A ></A ><B >mkClassPred</B > :: <A HREF="Class.html#t%3AClass" >Class</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3APredType" >PredType</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isInheritablePred" ><A NAME="v%3AisInheritablePred" ></A ></A ><B >isInheritablePred</B > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isIPPred" ><A NAME="v%3AisIPPred" ></A ></A ><B >isIPPred</B > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isRefineableTy" ><A NAME="v%3AisRefineableTy" ></A ></A ><B >isRefineableTy</B > :: <A HREF="TcType.html#t%3ATcType" >TcType</A > -> (<A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >, <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isRefineablePred" ><A NAME="v%3AisRefineablePred" ></A ></A ><B >isRefineablePred</B > :: <A HREF="TcType.html#t%3ATcPredType" >TcPredType</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFFIArgumentTy" ><A NAME="v%3AisFFIArgumentTy" ></A ></A ><B >isFFIArgumentTy</B > :: <A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A > -> <A HREF="ForeignCall.html#t%3ASafety" >Safety</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFFIImportResultTy" ><A NAME="v%3AisFFIImportResultTy" ></A ></A ><B >isFFIImportResultTy</B > :: <A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFFIExportResultTy" ><A NAME="v%3AisFFIExportResultTy" ></A ></A ><B >isFFIExportResultTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFFIExternalTy" ><A NAME="v%3AisFFIExternalTy" ></A ></A ><B >isFFIExternalTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFFIDynArgumentTy" ><A NAME="v%3AisFFIDynArgumentTy" ></A ></A ><B >isFFIDynArgumentTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFFIDynResultTy" ><A NAME="v%3AisFFIDynResultTy" ></A ></A ><B >isFFIDynResultTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFFIPrimArgumentTy" ><A NAME="v%3AisFFIPrimArgumentTy" ></A ></A ><B >isFFIPrimArgumentTy</B > :: <A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFFIPrimResultTy" ><A NAME="v%3AisFFIPrimResultTy" ></A ></A ><B >isFFIPrimResultTy</B > :: <A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFFILabelTy" ><A NAME="v%3AisFFILabelTy" ></A ></A ><B >isFFILabelTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFFIDotnetTy" ><A NAME="v%3AisFFIDotnetTy" ></A ></A ><B >isFFIDotnetTy</B > :: <A HREF="DynFlags.html#t%3ADynFlags" >DynFlags</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFFIDotnetObjTy" ><A NAME="v%3AisFFIDotnetObjTy" ></A ></A ><B >isFFIDotnetObjTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFFITy" ><A NAME="v%3AisFFITy" ></A ></A ><B >isFFITy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isFunPtrTy" ><A NAME="v%3AisFunPtrTy" ></A ></A ><B >isFunPtrTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcSplitIOType_maybe" ><A NAME="v%3AtcSplitIOType_maybe" ></A ></A ><B >tcSplitIOType_maybe</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="TyCon.html#t%3ATyCon" >TyCon</A >, <A HREF="TcType.html#t%3AType" >Type</A >, <A HREF="Coercion.html#t%3ACoercionI" >CoercionI</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:Kind" ><A NAME="t%3AKind" ></A ></A ><B >Kind</B > = <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="doc" ><P >The key type representing kinds in the compiler. Invariant: a kind is always in one of these forms: </P ><PRE > FunTy k1 k2 TyConApp PrimTyCon [...] TyVar kv -- (during inference only) ForAll ... -- (for top-level coercions) </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:unliftedTypeKind" ><A NAME="v%3AunliftedTypeKind" ></A ></A ><B >unliftedTypeKind</B > :: <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="doc" >See <A HREF="Type.html#kind_subtyping" >Type</A > for details of the distinction between these <TT ><A HREF="TcType.html#t%3AKind" >Kind</A ></TT >s </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:liftedTypeKind" ><A NAME="v%3AliftedTypeKind" ></A ></A ><B >liftedTypeKind</B > :: <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:argTypeKind" ><A NAME="v%3AargTypeKind" ></A ></A ><B >argTypeKind</B > :: <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:openTypeKind" ><A NAME="v%3AopenTypeKind" ></A ></A ><B >openTypeKind</B > :: <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkArrowKind" ><A NAME="v%3AmkArrowKind" ></A ></A ><B >mkArrowKind</B > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="doc" >Given two kinds <TT >k1</TT > and <TT >k2</TT >, creates the <TT ><A HREF="TcType.html#t%3AKind" >Kind</A ></TT > <TT >k1 -> k2</TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkArrowKinds" ><A NAME="v%3AmkArrowKinds" ></A ></A ><B >mkArrowKinds</B > :: [<A HREF="TcType.html#t%3AKind" >Kind</A >] -> <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="doc" >Iterated application of <TT ><A HREF="TcType.html#v%3AmkArrowKind" >mkArrowKind</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isLiftedTypeKind" ><A NAME="v%3AisLiftedTypeKind" ></A ></A ><B >isLiftedTypeKind</B > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isUnliftedTypeKind" ><A NAME="v%3AisUnliftedTypeKind" ></A ></A ><B >isUnliftedTypeKind</B > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isSubOpenTypeKind" ><A NAME="v%3AisSubOpenTypeKind" ></A ></A ><B >isSubOpenTypeKind</B > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >True of any sub-kind of OpenTypeKind (i.e. anything except arrow) </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isSubArgTypeKind" ><A NAME="v%3AisSubArgTypeKind" ></A ></A ><B >isSubArgTypeKind</B > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >True of any sub-kind of ArgTypeKind </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isSubKind" ><A NAME="v%3AisSubKind" ></A ></A ><B >isSubKind</B > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT >k1 `isSubKind` k2</TT > checks that <TT >k1</TT > <: <TT >k2</TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:splitKindFunTys" ><A NAME="v%3AsplitKindFunTys" ></A ></A ><B >splitKindFunTys</B > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> ([<A HREF="TcType.html#t%3AKind" >Kind</A >], <A HREF="TcType.html#t%3AKind" >Kind</A >)</TD ></TR ><TR ><TD CLASS="doc" >Essentially <TT ><A HREF="Type.html#v%3AsplitFunTys" >splitFunTys</A ></TT > on kinds </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:defaultKind" ><A NAME="v%3AdefaultKind" ></A ></A ><B >defaultKind</B > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="doc" >Used when generalising: default kind ? and ?? to *. See <A HREF="Type.html#kind_subtyping" >Type</A > for more information on what that means </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:kindVarRef" ><A NAME="v%3AkindVarRef" ></A ></A ><B >kindVarRef</B > :: <A HREF="Type.html#t%3AKindVar" >KindVar</A > -> <A HREF="IOEnv.html#t%3AIORef" >IORef</A > <A HREF="TcType.html#t%3AMetaDetails" >MetaDetails</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkKindVar" ><A NAME="v%3AmkKindVar" ></A ></A ><B >mkKindVar</B > :: <A HREF="Unique.html#t%3AUnique" >Unique</A > -> <A HREF="IOEnv.html#t%3AIORef" >IORef</A > <A HREF="TcType.html#t%3AMetaDetails" >MetaDetails</A > -> <A HREF="Type.html#t%3AKindVar" >KindVar</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Type" ><A NAME="t%3AType" ></A ></A ><B >Type</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >The key representation of types within the compiler </TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Type')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Type" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Outputable.html#t%3AOutputable" >Outputable</A > <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:PredType" ><A NAME="t%3APredType" ></A ></A ><B >PredType</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >A type of the form <TT >PredTy p</TT > represents a value whose type is the Haskell predicate <TT >p</TT >, where a predicate is what occurs before the <TT >=></TT > in a Haskell type. It can be expanded into its representation, but: </P ><UL ><LI > The type checker must treat it as opaque </LI ><LI > The rest of the compiler treats it as transparent </LI ></UL ><P >Consider these examples: </P ><PRE > f :: (Eq a) => a -> Int g :: (?x :: Int -> Int) => a -> Int h :: (r\l) => {r} => {l::Int | r} </PRE ><P >Here the <TT >Eq a</TT > and <TT >?x :: Int -> Int</TT > and <TT >rl</TT > are all called "predicates" </P ></TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:ClassP" ><A NAME="v%3AClassP" ></A ></A ><B >ClassP</B > <A HREF="Class.html#t%3AClass" >Class</A > [<A HREF="TcType.html#t%3AType" >Type</A >]</TD ><TD CLASS="rdoc" >Class predicate e.g. <TT >Eq a</TT > </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:IParam" ><A NAME="v%3AIParam" ></A ></A ><B >IParam</B > (<A HREF="BasicTypes.html#t%3AIPName" >IPName</A > <A HREF="Name.html#t%3AName" >Name</A >) <A HREF="TcType.html#t%3AType" >Type</A ></TD ><TD CLASS="rdoc" >Implicit parameter e.g. <TT >?x :: Int</TT > </TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:EqPred" ><A NAME="v%3AEqPred" ></A ></A ><B >EqPred</B > <A HREF="TcType.html#t%3AType" >Type</A > <A HREF="TcType.html#t%3AType" >Type</A ></TD ><TD CLASS="rdoc" >Equality predicate e.g <TT >ty1 ~ ty2</TT > </TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:PredType')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:PredType" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="../base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > <A HREF="TcType.html#t%3APredType" >PredType</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="TcType.html#t%3APredType" >PredType</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Outputable.html#t%3AOutputable" >Outputable</A > <A HREF="TcType.html#t%3APredType" >PredType</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:ThetaType" ><A NAME="t%3AThetaType" ></A ></A ><B >ThetaType</B > = [<A HREF="TcType.html#t%3APredType" >PredType</A >]</TD ></TR ><TR ><TD CLASS="doc" >A collection of <TT ><A HREF="TcType.html#t%3APredType" >PredType</A ></TT >s </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkForAllTy" ><A NAME="v%3AmkForAllTy" ></A ></A ><B >mkForAllTy</B > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkForAllTys" ><A NAME="v%3AmkForAllTys" ></A ></A ><B >mkForAllTys</B > :: [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="doc" >Wraps foralls over the type using the provided <TT ><A HREF="Var.html#t%3ATyVar" >TyVar</A ></TT >s from left to right </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkFunTy" ><A NAME="v%3AmkFunTy" ></A ></A ><B >mkFunTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="doc" >Creates a function type from the given argument and result type </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkFunTys" ><A NAME="v%3AmkFunTys" ></A ></A ><B >mkFunTys</B > :: [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zipFunTys" ><A NAME="v%3AzipFunTys" ></A ></A ><B >zipFunTys</B > :: <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > a => [a] -> <A HREF="TcType.html#t%3AType" >Type</A > -> ([(a, <A HREF="TcType.html#t%3AType" >Type</A >)], <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="doc" >Splits off argument types from the given type and associating them with the things in the input list from left to right. The final result type is returned, along with the resulting pairs of objects and types, albeit with the list of pairs in reverse order. Panics if there are not enough argument types for the input list. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkTyConApp" ><A NAME="v%3AmkTyConApp" ></A ></A ><B >mkTyConApp</B > :: <A HREF="TyCon.html#t%3ATyCon" >TyCon</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="doc" >A key function: builds a <TT >TyConApp</TT > or <TT >FunTy</TT > as apppropriate to its arguments. Applies its arguments to the constructor from left to right </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkAppTy" ><A NAME="v%3AmkAppTy" ></A ></A ><B >mkAppTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="doc" >Applies a type to another, as in e.g. <TT >k a</TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkAppTys" ><A NAME="v%3AmkAppTys" ></A ></A ><B >mkAppTys</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:applyTy" ><A NAME="v%3AapplyTy" ></A ></A ><B >applyTy</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="doc" ><P >Instantiate a forall type with one or more type arguments. Used when we have a polymorphic function applied to type args: </P ><PRE > f t1 t2 </PRE ><P >We use <TT >applyTys type-of-f [t1,t2]</TT > to compute the type of the expression. Panics if no application is possible. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:applyTys" ><A NAME="v%3AapplyTys" ></A ></A ><B >applyTys</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="doc" ><P >This function is interesting because: </P ><P >1. The function may have more for-alls than there are args </P ><P >2. Less obviously, it may have fewer for-alls </P ><P >For case 2. think of: </P ><PRE > applyTys (forall a.a) [forall b.b, Int] </PRE ><P >This really can happen, via dressing up polymorphic types with newtype clothing. Here's an example: </P ><PRE > newtype R = R (forall a. a->a) foo = case undefined :: R of R f -> f () </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkTyVarTy" ><A NAME="v%3AmkTyVarTy" ></A ></A ><B >mkTyVarTy</B > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkTyVarTys" ><A NAME="v%3AmkTyVarTys" ></A ></A ><B >mkTyVarTys</B > :: [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkTyConTy" ><A NAME="v%3AmkTyConTy" ></A ></A ><B >mkTyConTy</B > :: <A HREF="TyCon.html#t%3ATyCon" >TyCon</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="doc" >Create the plain type constructor type which has been applied to no type arguments at all. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkPredTy" ><A NAME="v%3AmkPredTy" ></A ></A ><B >mkPredTy</B > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkPredTys" ><A NAME="v%3AmkPredTys" ></A ></A ><B >mkPredTys</B > :: <A HREF="TcType.html#t%3AThetaType" >ThetaType</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:TvSubst" ><A NAME="t%3ATvSubst" ></A ></A ><B >TvSubst</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" ><P >Type substitution </P ><P ><A NAME="tvsubst_invariant" ><A NAME="tvsubst_invariant" ></A ></A > The following invariants must hold of a <TT ><A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TT >: </P ><P >1. The in-scope set is needed <EM >only</EM > to guide the generation of fresh uniques </P ><P >2. In particular, the <EM >kind</EM > of the type variables in the in-scope set is not relevant </P ><P >3. The substition is only applied ONCE! This is because in general such application will not reached a fixed point. </P ></TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:TvSubst" ><A NAME="v%3ATvSubst" ></A ></A ><B >TvSubst</B > <A HREF="VarEnv.html#t%3AInScopeSet" >InScopeSet</A > <A HREF="TcType.html#t%3ATvSubstEnv" >TvSubstEnv</A ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:TvSubst')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:TvSubst" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="Outputable.html#t%3AOutputable" >Outputable</A > <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:TvSubstEnv" ><A NAME="t%3ATvSubstEnv" ></A ></A ><B >TvSubstEnv</B > = <A HREF="VarEnv.html#t%3ATyVarEnv" >TyVarEnv</A > <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="doc" >A substitition of <TT ><A HREF="TcType.html#t%3AType" >Type</A ></TT >s for <TT ><A HREF="Var.html#t%3ATyVar" >TyVar</A ></TT >s </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:emptyTvSubst" ><A NAME="v%3AemptyTvSubst" ></A ></A ><B >emptyTvSubst</B > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:substEqSpec" ><A NAME="v%3AsubstEqSpec" ></A ></A ><B >substEqSpec</B > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> [(<A HREF="Var.html#t%3ATyVar" >TyVar</A >, <A HREF="TcType.html#t%3AType" >Type</A >)] -> [(<A HREF="TcType.html#t%3ATcType" >TcType</A >, <A HREF="TcType.html#t%3ATcType" >TcType</A >)]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkOpenTvSubst" ><A NAME="v%3AmkOpenTvSubst" ></A ></A ><B >mkOpenTvSubst</B > :: <A HREF="TcType.html#t%3ATvSubstEnv" >TvSubstEnv</A > -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="doc" >Generates the in-scope set for the <TT ><A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TT > from the types in the incoming environment, hence <A HREF="open.html" >open</A > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zipOpenTvSubst" ><A NAME="v%3AzipOpenTvSubst" ></A ></A ><B >zipOpenTvSubst</B > :: [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="doc" >Generates the in-scope set for the <TT ><A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TT > from the types in the incoming environment, hence <A HREF="open.html" >open</A > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zipTopTvSubst" ><A NAME="v%3AzipTopTvSubst" ></A ></A ><B >zipTopTvSubst</B > :: [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkTopTvSubst" ><A NAME="v%3AmkTopTvSubst" ></A ></A ><B >mkTopTvSubst</B > :: [(<A HREF="Var.html#t%3ATyVar" >TyVar</A >, <A HREF="TcType.html#t%3AType" >Type</A >)] -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="doc" >Called when doing top-level substitutions. Here we expect that the free vars of the range of the substitution will be empty. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:notElemTvSubst" ><A NAME="v%3AnotElemTvSubst" ></A ></A ><B >notElemTvSubst</B > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getTvSubstEnv" ><A NAME="v%3AgetTvSubstEnv" ></A ></A ><B >getTvSubstEnv</B > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="TcType.html#t%3ATvSubstEnv" >TvSubstEnv</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setTvSubstEnv" ><A NAME="v%3AsetTvSubstEnv" ></A ></A ><B >setTvSubstEnv</B > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="TcType.html#t%3ATvSubstEnv" >TvSubstEnv</A > -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:getTvInScope" ><A NAME="v%3AgetTvInScope" ></A ></A ><B >getTvInScope</B > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="VarEnv.html#t%3AInScopeSet" >InScopeSet</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:extendTvInScope" ><A NAME="v%3AextendTvInScope" ></A ></A ><B >extendTvInScope</B > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> [<A HREF="Var.html#t%3AVar" >Var</A >] -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:lookupTyVar" ><A NAME="v%3AlookupTyVar" ></A ></A ><B >lookupTyVar</B > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:extendTvSubst" ><A NAME="v%3AextendTvSubst" ></A ></A ><B >extendTvSubst</B > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:extendTvSubstList" ><A NAME="v%3AextendTvSubstList" ></A ></A ><B >extendTvSubstList</B > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isInScope" ><A NAME="v%3AisInScope" ></A ></A ><B >isInScope</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkTvSubst" ><A NAME="v%3AmkTvSubst" ></A ></A ><B >mkTvSubst</B > :: <A HREF="VarEnv.html#t%3AInScopeSet" >InScopeSet</A > -> <A HREF="TcType.html#t%3ATvSubstEnv" >TvSubstEnv</A > -> <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zipTyEnv" ><A NAME="v%3AzipTyEnv" ></A ></A ><B >zipTyEnv</B > :: [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3ATvSubstEnv" >TvSubstEnv</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:substTy" ><A NAME="v%3AsubstTy" ></A ></A ><B >substTy</B > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="doc" >Substitute within a <TT ><A HREF="TcType.html#t%3AType" >Type</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:substTys" ><A NAME="v%3AsubstTys" ></A ></A ><B >substTys</B > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >]</TD ></TR ><TR ><TD CLASS="doc" >Substitute within several <TT ><A HREF="TcType.html#t%3AType" >Type</A ></TT >s </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:substTyWith" ><A NAME="v%3AsubstTyWith" ></A ></A ><B >substTyWith</B > :: [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="doc" >Type substitution making use of an <TT ><A HREF="TcType.html#t%3ATvSubst" >TvSubst</A ></TT > that is assumed to be open, see <TT ><A HREF="TcType.html#v%3AzipOpenTvSubst" >zipOpenTvSubst</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:substTheta" ><A NAME="v%3AsubstTheta" ></A ></A ><B >substTheta</B > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="TcType.html#t%3AThetaType" >ThetaType</A > -> <A HREF="TcType.html#t%3AThetaType" >ThetaType</A ></TD ></TR ><TR ><TD CLASS="doc" >Substitute within a <TT ><A HREF="TcType.html#t%3AThetaType" >ThetaType</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:substTyVar" ><A NAME="v%3AsubstTyVar" ></A ></A ><B >substTyVar</B > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:substTyVars" ><A NAME="v%3AsubstTyVars" ></A ></A ><B >substTyVars</B > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:substTyVarBndr" ><A NAME="v%3AsubstTyVarBndr" ></A ></A ><B >substTyVarBndr</B > :: <A HREF="TcType.html#t%3ATvSubst" >TvSubst</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> (<A HREF="TcType.html#t%3ATvSubst" >TvSubst</A >, <A HREF="Var.html#t%3ATyVar" >TyVar</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isUnLiftedType" ><A NAME="v%3AisUnLiftedType" ></A ></A ><B >isUnLiftedType</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >See <A HREF="Type.html#type_classification" >Type</A > for what an unlifted type is </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isUnboxedTupleType" ><A NAME="v%3AisUnboxedTupleType" ></A ></A ><B >isUnboxedTupleType</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isPrimitiveType" ><A NAME="v%3AisPrimitiveType" ></A ></A ><B >isPrimitiveType</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >Returns true of types that are opaque to Haskell. Most of these are unlifted, but now that we interact with .NET, we may have primtive (foreign-imported) types that are lifted </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tidyTopType" ><A NAME="v%3AtidyTopType" ></A ></A ><B >tidyTopType</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="doc" >Calls <TT ><A HREF="TcType.html#v%3AtidyType" >tidyType</A ></TT > on a top-level type (i.e. with an empty tidying environment) </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tidyType" ><A NAME="v%3AtidyType" ></A ></A ><B >tidyType</B > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AType" >Type</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tidyPred" ><A NAME="v%3AtidyPred" ></A ></A ><B >tidyPred</B > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="TcType.html#t%3APredType" >PredType</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tidyTypes" ><A NAME="v%3AtidyTypes" ></A ></A ><B >tidyTypes</B > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> [<A HREF="TcType.html#t%3AType" >Type</A >]</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tidyFreeTyVars" ><A NAME="v%3AtidyFreeTyVars" ></A ></A ><B >tidyFreeTyVars</B > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A > -> <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A ></TD ></TR ><TR ><TD CLASS="doc" >Add the free <TT ><A HREF="Var.html#t%3ATyVar" >TyVar</A ></TT >s to the env in tidy form, so that we can tidy the type they are free in </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tidyOpenType" ><A NAME="v%3AtidyOpenType" ></A ></A ><B >tidyOpenType</B > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="TcType.html#t%3AType" >Type</A > -> (<A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A >, <A HREF="TcType.html#t%3AType" >Type</A >)</TD ></TR ><TR ><TD CLASS="doc" >Grabs the free type variables, tidies them and then uses <TT ><A HREF="TcType.html#v%3AtidyType" >tidyType</A ></TT > to work over the type itself </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tidyOpenTypes" ><A NAME="v%3AtidyOpenTypes" ></A ></A ><B >tidyOpenTypes</B > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> (<A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A >, [<A HREF="TcType.html#t%3AType" >Type</A >])</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tidyTyVarBndr" ><A NAME="v%3AtidyTyVarBndr" ></A ></A ><B >tidyTyVarBndr</B > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> (<A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A >, <A HREF="Var.html#t%3ATyVar" >TyVar</A >)</TD ></TR ><TR ><TD CLASS="doc" ><P >This tidies up a type for printing in an error message, or in an interface file. </P ><P >It doesn't change the uniques at all, just the print names. </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tidyOpenTyVar" ><A NAME="v%3AtidyOpenTyVar" ></A ></A ><B >tidyOpenTyVar</B > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> (<A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A >, <A HREF="Var.html#t%3ATyVar" >TyVar</A >)</TD ></TR ><TR ><TD CLASS="doc" >Treat a new <TT ><A HREF="Var.html#t%3ATyVar" >TyVar</A ></TT > as a binder, and give it a fresh tidy name using the environment if one has not already been allocated. See also <TT ><A HREF="TcType.html#v%3AtidyTyVarBndr" >tidyTyVarBndr</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tidyOpenTyVars" ><A NAME="v%3AtidyOpenTyVars" ></A ></A ><B >tidyOpenTyVars</B > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> [<A HREF="Var.html#t%3ATyVar" >TyVar</A >] -> (<A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A >, [<A HREF="Var.html#t%3ATyVar" >TyVar</A >])</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tidySkolemTyVar" ><A NAME="v%3AtidySkolemTyVar" ></A ></A ><B >tidySkolemTyVar</B > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A > -> (<A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A >, <A HREF="TcType.html#t%3ATcTyVar" >TcTyVar</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:typeKind" ><A NAME="v%3AtypeKind" ></A ></A ><B >typeKind</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tidyKind" ><A NAME="v%3AtidyKind" ></A ></A ><B >tidyKind</B > :: <A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A > -> <A HREF="TcType.html#t%3AKind" >Kind</A > -> (<A HREF="VarEnv.html#t%3ATidyEnv" >TidyEnv</A >, <A HREF="TcType.html#t%3AKind" >Kind</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tyVarsOfType" ><A NAME="v%3AtyVarsOfType" ></A ></A ><B >tyVarsOfType</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="doc" >NB: for type synonyms tyVarsOfType does <EM >not</EM > expand the synonym </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tyVarsOfTypes" ><A NAME="v%3AtyVarsOfTypes" ></A ></A ><B >tyVarsOfTypes</B > :: [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tyVarsOfPred" ><A NAME="v%3AtyVarsOfPred" ></A ></A ><B >tyVarsOfPred</B > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tyVarsOfTheta" ><A NAME="v%3AtyVarsOfTheta" ></A ></A ><B >tyVarsOfTheta</B > :: <A HREF="TcType.html#t%3AThetaType" >ThetaType</A > -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcTyVarsOfType" ><A NAME="v%3AtcTyVarsOfType" ></A ></A ><B >tcTyVarsOfType</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="TcType.html#t%3ATcTyVarSet" >TcTyVarSet</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcTyVarsOfTypes" ><A NAME="v%3AtcTyVarsOfTypes" ></A ></A ><B >tcTyVarsOfTypes</B > :: [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcTyVarsOfPred" ><A NAME="v%3AtcTyVarsOfPred" ></A ></A ><B >tcTyVarsOfPred</B > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:exactTyVarsOfType" ><A NAME="v%3AexactTyVarsOfType" ></A ></A ><B >exactTyVarsOfType</B > :: <A HREF="TcType.html#t%3ATcType" >TcType</A > -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:exactTyVarsOfTypes" ><A NAME="v%3AexactTyVarsOfTypes" ></A ></A ><B >exactTyVarsOfTypes</B > :: [<A HREF="TcType.html#t%3ATcType" >TcType</A >] -> <A HREF="VarSet.html#t%3ATyVarSet" >TyVarSet</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprKind" ><A NAME="v%3ApprKind" ></A ></A ><B >pprKind</B > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprParendKind" ><A NAME="v%3ApprParendKind" ></A ></A ><B >pprParendKind</B > :: <A HREF="TcType.html#t%3AKind" >Kind</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprType" ><A NAME="v%3ApprType" ></A ></A ><B >pprType</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprParendType" ><A NAME="v%3ApprParendType" ></A ></A ><B >pprParendType</B > :: <A HREF="TcType.html#t%3AType" >Type</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprTypeApp" ><A NAME="v%3ApprTypeApp" ></A ></A ><B >pprTypeApp</B > :: <A HREF="Name.html#t%3ANamedThing" >NamedThing</A > a => a -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprTyThingCategory" ><A NAME="v%3ApprTyThingCategory" ></A ></A ><B >pprTyThingCategory</B > :: <A HREF="Type.html#t%3ATyThing" >TyThing</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprPred" ><A NAME="v%3ApprPred" ></A ></A ><B >pprPred</B > :: <A HREF="TcType.html#t%3APredType" >PredType</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprTheta" ><A NAME="v%3ApprTheta" ></A ></A ><B >pprTheta</B > :: <A HREF="TcType.html#t%3AThetaType" >ThetaType</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprThetaArrow" ><A NAME="v%3ApprThetaArrow" ></A ></A ><B >pprThetaArrow</B > :: <A HREF="TcType.html#t%3AThetaType" >ThetaType</A > -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprClassPred" ><A NAME="v%3ApprClassPred" ></A ></A ><B >pprClassPred</B > :: <A HREF="Class.html#t%3AClass" >Class</A > -> [<A HREF="TcType.html#t%3AType" >Type</A >] -> <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="botbar" >Produced by <A HREF="http://www.haskell.org/haddock/" >Haddock</A > version 2.6.1</TD ></TR ></TABLE ></BODY ></HTML >