Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 70ec89744a04da80369b4702b2c37256 > files > 927

ghc-doc-6.10.4-1mdv2010.0.i586.rpm

<!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.10.4: 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
></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
> -&gt; <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="../base/Data-IORef.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
> -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../base/Data-IORef.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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
>] -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
>] -&gt; [<A HREF="TcType.html#t%3APredType"
>PredType</A
>] -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; <A HREF="../base/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
> -&gt; ([<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
> -&gt; (<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
> -&gt; <A HREF="../base/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
> -&gt; <A HREF="../base/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
> -&gt; ([<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
> -&gt; <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
> -&gt; <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
> -&gt; <A HREF="BasicTypes.html#t%3AArity"
>Arity</A
> -&gt; ([<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
> -&gt; (<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
> -&gt; <A HREF="../base/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
> -&gt; <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
> -&gt; [<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
> -&gt; <A HREF="../base/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
> -&gt; (<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
> -&gt; (<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
> -&gt; <A HREF="../base/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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../base/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/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; ([<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
> -&gt; ([([<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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="../ghc-prim/GHC-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
>] -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="TcType.html#t%3APredType"
>PredType</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="../ghc-prim/GHC-Ordering.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
>] -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <A HREF="../ghc-prim/GHC-Ordering.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
> -&gt; <A HREF="TcType.html#t%3APredType"
>PredType</A
> -&gt; <A HREF="../ghc-prim/GHC-Ordering.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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="TcType.html#t%3AKind"
>Kind</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <A HREF="../base/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
> -&gt; (<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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
> -&gt; <A HREF="../base/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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; ([<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
> -&gt; (<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
> -&gt; <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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AdataConsStupidTheta"
>dataConsStupidTheta</A
> :: [<A HREF="DataCon.html#t%3ADataCon"
>DataCon</A
>] -&gt; <A HREF="TcType.html#t%3AThetaType"
>ThetaType</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
> -&gt; (<A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
>, <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="ForeignCall.html#t%3ASafety"
>Safety</A
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../base/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"
><A HREF="#v%3AtoDNType"
>toDNType</A
> :: <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="ForeignCall.html#t%3ADNType"
>DNType</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
> -&gt; <A HREF="TcType.html#t%3AKind"
>Kind</A
> -&gt; <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
>] -&gt; <A HREF="TcType.html#t%3AKind"
>Kind</A
> -&gt; <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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="TcType.html#t%3AKind"
>Kind</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</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
> -&gt; <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
> -&gt; <A HREF="../base/Data-IORef.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
> -&gt; <A HREF="../base/Data-IORef.html#t%3AIORef"
>IORef</A
> <A HREF="TcType.html#t%3AMetaDetails"
>MetaDetails</A
> -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
>] -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
>] -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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 =&gt; [a] -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; ([(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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
> -&gt; <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
>] -&gt; [<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
> -&gt; <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
> -&gt; <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
> -&gt; [<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
> -&gt; [(<A HREF="Var.html#t%3ATyVar"
>TyVar</A
>, <A HREF="TcType.html#t%3AType"
>Type</A
>)] -&gt; [(<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
> -&gt; <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
>] -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
>] -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
>)] -&gt; <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
> -&gt; <A HREF="TcType.html#t%3ATvSubst"
>TvSubst</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <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
> -&gt; <A HREF="TcType.html#t%3ATvSubstEnv"
>TvSubstEnv</A
> -&gt; <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
> -&gt; <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
> -&gt; [<A HREF="Var.html#t%3AVar"
>Var</A
>] -&gt; <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
> -&gt; <A HREF="Var.html#t%3ATyVar"
>TyVar</A
> -&gt; <A HREF="../base/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
> -&gt; <A HREF="Var.html#t%3ATyVar"
>TyVar</A
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; [<A HREF="Var.html#t%3ATyVar"
>TyVar</A
>] -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
> -&gt; <A HREF="TcType.html#t%3ATvSubst"
>TvSubst</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="TcType.html#t%3ATvSubstEnv"
>TvSubstEnv</A
> -&gt; <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
>] -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; [<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
>] -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AThetaType"
>ThetaType</A
> -&gt; <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
> -&gt; <A HREF="Var.html#t%3ATyVar"
>TyVar</A
> -&gt; <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
> -&gt; [<A HREF="Var.html#t%3ATyVar"
>TyVar</A
>] -&gt; [<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
> -&gt; <A HREF="Var.html#t%3ATyVar"
>TyVar</A
> -&gt; (<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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; <A HREF="TcType.html#t%3APredType"
>PredType</A
> -&gt; <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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; [<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
> -&gt; <A HREF="VarSet.html#t%3ATyVarSet"
>TyVarSet</A
> -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; (<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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; (<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
> -&gt; <A HREF="Var.html#t%3ATyVar"
>TyVar</A
> -&gt; (<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
> -&gt; <A HREF="Var.html#t%3ATyVar"
>TyVar</A
> -&gt; (<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
> -&gt; [<A HREF="Var.html#t%3ATyVar"
>TyVar</A
>] -&gt; (<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
> -&gt; <A HREF="TcType.html#t%3ATcTyVar"
>TcTyVar</A
> -&gt; (<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
> -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AKind"
>Kind</A
> -&gt; (<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
> -&gt; <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
>] -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <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
>] -&gt; <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
> -&gt; <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
>] -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <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 =&gt; a -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
></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
> -&gt; <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="../base/Data-IORef.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
> -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../base/Data-IORef.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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
>] -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
>] -&gt; [<A HREF="TcType.html#t%3APredType"
>PredType</A
>] -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; <A HREF="../base/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
> -&gt; ([<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
> -&gt; (<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
> -&gt; <A HREF="../base/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
> -&gt; <A HREF="../base/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
> -&gt; ([<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
> -&gt; <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
> -&gt; <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
> -&gt; <A HREF="BasicTypes.html#t%3AArity"
>Arity</A
> -&gt; ([<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
> -&gt; (<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
> -&gt; <A HREF="../base/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
> -&gt; <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
> -&gt; [<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
> -&gt; <A HREF="../base/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
> -&gt; (<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
> -&gt; (<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
> -&gt; <A HREF="../base/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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../base/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/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; ([<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
> -&gt; ([([<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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="../ghc-prim/GHC-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
>] -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="TcType.html#t%3APredType"
>PredType</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="../ghc-prim/GHC-Ordering.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
>] -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <A HREF="../ghc-prim/GHC-Ordering.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
> -&gt; <A HREF="TcType.html#t%3APredType"
>PredType</A
> -&gt; <A HREF="../ghc-prim/GHC-Ordering.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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="TcType.html#t%3AKind"
>Kind</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <A HREF="../base/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
> -&gt; (<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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
> -&gt; <A HREF="../base/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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; ([<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
> -&gt; (<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
> -&gt; <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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:dataConsStupidTheta"
><A NAME="v%3AdataConsStupidTheta"
></A
></A
><B
>dataConsStupidTheta</B
> :: [<A HREF="DataCon.html#t%3ADataCon"
>DataCon</A
>] -&gt; <A HREF="TcType.html#t%3AThetaType"
>ThetaType</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
> -&gt; (<A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
>, <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="ForeignCall.html#t%3ASafety"
>Safety</A
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../base/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"
><A NAME="v:toDNType"
><A NAME="v%3AtoDNType"
></A
></A
><B
>toDNType</B
> :: <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <A HREF="ForeignCall.html#t%3ADNType"
>DNType</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
> -&gt; <A HREF="TcType.html#t%3AKind"
>Kind</A
> -&gt; <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 -&gt; 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
>] -&gt; <A HREF="TcType.html#t%3AKind"
>Kind</A
> -&gt; <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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="TcType.html#t%3AKind"
>Kind</A
> -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
></TD
></TR
><TR
><TD CLASS="doc"
><TT
>k1 `isSubKind` k2</TT
> checks that <TT
>k1</TT
> &lt;: <TT
>k2</TT
>
</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
> -&gt; <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
> -&gt; <A HREF="../base/Data-IORef.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
> -&gt; <A HREF="../base/Data-IORef.html#t%3AIORef"
>IORef</A
> <A HREF="TcType.html#t%3AMetaDetails"
>MetaDetails</A
> -&gt; <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
>=&gt;</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) =&gt; a -&gt; Int
 g :: (?x :: Int -&gt; Int) =&gt; a -&gt; Int
 h :: (r\l) =&gt; {r} =&gt; {l::Int | r}
</PRE
><P
>Here the <TT
>Eq a</TT
> and <TT
>?x :: Int -&gt; Int</TT
> and <TT
>rl</TT
> are all called &quot;predicates&quot;
</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/Data-Eq.html#t%3AEq"
>Eq</A
> <A HREF="TcType.html#t%3APredType"
>PredType</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="../base/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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
>] -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
>] -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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 =&gt; [a] -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; ([(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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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-&gt;a)
 foo = case undefined :: R of
            R f -&gt; 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
> -&gt; <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
>] -&gt; [<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
> -&gt; <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
> -&gt; <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
> -&gt; [<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
> -&gt; [(<A HREF="Var.html#t%3ATyVar"
>TyVar</A
>, <A HREF="TcType.html#t%3AType"
>Type</A
>)] -&gt; [(<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
> -&gt; <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
>] -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
>] -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
>)] -&gt; <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
> -&gt; <A HREF="TcType.html#t%3ATvSubst"
>TvSubst</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <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
> -&gt; <A HREF="TcType.html#t%3ATvSubstEnv"
>TvSubstEnv</A
> -&gt; <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
> -&gt; <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
> -&gt; [<A HREF="Var.html#t%3AVar"
>Var</A
>] -&gt; <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
> -&gt; <A HREF="Var.html#t%3ATyVar"
>TyVar</A
> -&gt; <A HREF="../base/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
> -&gt; <A HREF="Var.html#t%3ATyVar"
>TyVar</A
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; [<A HREF="Var.html#t%3ATyVar"
>TyVar</A
>] -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
> -&gt; <A HREF="TcType.html#t%3ATvSubst"
>TvSubst</A
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="TcType.html#t%3ATvSubstEnv"
>TvSubstEnv</A
> -&gt; <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
>] -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; [<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
>] -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AThetaType"
>ThetaType</A
> -&gt; <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
> -&gt; <A HREF="Var.html#t%3ATyVar"
>TyVar</A
> -&gt; <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
> -&gt; [<A HREF="Var.html#t%3ATyVar"
>TyVar</A
>] -&gt; [<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
> -&gt; <A HREF="Var.html#t%3ATyVar"
>TyVar</A
> -&gt; (<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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <A HREF="../ghc-prim/GHC-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
> -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; <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
> -&gt; <A HREF="TcType.html#t%3APredType"
>PredType</A
> -&gt; <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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; [<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
> -&gt; <A HREF="VarSet.html#t%3ATyVarSet"
>TyVarSet</A
> -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AType"
>Type</A
> -&gt; (<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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; (<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
> -&gt; <A HREF="Var.html#t%3ATyVar"
>TyVar</A
> -&gt; (<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
> -&gt; <A HREF="Var.html#t%3ATyVar"
>TyVar</A
> -&gt; (<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
> -&gt; [<A HREF="Var.html#t%3ATyVar"
>TyVar</A
>] -&gt; (<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
> -&gt; <A HREF="TcType.html#t%3ATcTyVar"
>TcTyVar</A
> -&gt; (<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
> -&gt; <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
> -&gt; <A HREF="TcType.html#t%3AKind"
>Kind</A
> -&gt; (<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
> -&gt; <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
>] -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <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
>] -&gt; <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
> -&gt; <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
>] -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <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 =&gt; a -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; <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
> -&gt; [<A HREF="TcType.html#t%3AType"
>Type</A
>] -&gt; <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.4.2</TD
></TR
></TABLE
></BODY
></HTML
>