<!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 >Var</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_Var.html")};</SCRIPT ></HEAD ><BODY ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="topbar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title" >ghc-6.12.3: The GHC API</TD ><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD ><TD CLASS="topbut" ><A HREF="doc-index.html" >Index</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="modulebar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><FONT SIZE="6" >Var</FONT ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" ><B >Contents</B ></TD ></TR ><TR ><TD ><DL ><DT ><A HREF="#1" >The main data type </A ></DT ><DD ><DL ><DT ><A HREF="#2" >Taking <TT ><A HREF="Var.html#t%3AVar" >Var</A ></TT >s apart </A ></DT ><DT ><A HREF="#3" >Modifying <TT ><A HREF="Var.html#t%3AVar" >Var</A ></TT >s </A ></DT ><DT ><A HREF="#4" >Constructing, taking apart, modifying <TT ><A HREF="Var.html#t%3AId" >Id</A ></TT >s </A ></DT ><DT ><A HREF="#5" >Predicates </A ></DT ></DL ></DD ><DT ><A HREF="#6" >Type variable data type </A ></DT ><DD ><DL ><DT ><A HREF="#7" >Constructing <TT ><A HREF="Var.html#t%3ATyVar" >TyVar</A ></TT >s </A ></DT ><DT ><A HREF="#8" >Taking <TT ><A HREF="Var.html#t%3ATyVar" >TyVar</A ></TT >s apart </A ></DT ><DT ><A HREF="#9" >Modifying <TT ><A HREF="Var.html#t%3ATyVar" >TyVar</A ></TT >s </A ></DT ></DL ></DD ><DT ><A HREF="#10" >Coercion variable data type </A ></DT ><DD ><DL ><DT ><A HREF="#11" >Constructing <TT ><A HREF="Var.html#t%3ACoVar" >CoVar</A ></TT >s </A ></DT ><DT ><A HREF="#12" >Taking <TT ><A HREF="Var.html#t%3ACoVar" >CoVar</A ></TT >s apart </A ></DT ><DT ><A HREF="#13" >Modifying <TT ><A HREF="Var.html#t%3ACoVar" >CoVar</A ></TT >s </A ></DT ></DL ></DD ><DT ><A HREF="#14" ><TT ><A HREF="Var.html#t%3AVar" >Var</A ></TT > type synonyms </A ></DT ></DL ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Description</TD ></TR ><TR ><TD CLASS="doc" ><P ><A NAME="name_types" ><A NAME="name_types" ></A ></A > GHC uses several kinds of name internally: </P ><UL ><LI > OccName.OccName: see <A HREF="OccName.html#name_types" >OccName</A > </LI ><LI > RdrName.RdrName: see <A HREF="RdrName.html#name_types" >RdrName</A > </LI ><LI > <TT ><A HREF="Name.html#t%3AName" >Name</A ></TT >: see <A HREF="Name.html#name_types" >Name</A > </LI ><LI > Id.Id: see <A HREF="Id.html#name_types" >Id</A > </LI ><LI > <TT ><A HREF="Var.html#t%3AVar" >Var</A ></TT > is a synonym for the Id.Id type but it may additionally potentially contain type variables, which have a <TT ><A HREF="Type.html#t%3AKind" >Kind</A ></TT > rather than a <TT ><A HREF="Type.html#t%3AType" >Type</A ></TT > and only contain some extra details during typechecking. These <TT ><A HREF="Var.html#t%3AVar" >Var</A ></TT > names may either be global or local, see <A HREF="Var.html#globalvslocal" >Var</A > </LI ></UL ><P ><A NAME="globalvslocal" ><A NAME="globalvslocal" ></A ></A > Global <TT ><A HREF="Var.html#t%3AId" >Id</A ></TT >s and <TT ><A HREF="Var.html#t%3AVar" >Var</A ></TT >s are those that are imported or correspond to a data constructor, primitive operation, or record selectors. Local <TT ><A HREF="Var.html#t%3AId" >Id</A ></TT >s and <TT ><A HREF="Var.html#t%3AVar" >Var</A ></TT >s are those bound within an expression (e.g. by a lambda) or at the top level of the module being compiled. </P ></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" >data</SPAN > <A HREF="#t%3AVar" >Var</A > </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AvarName" >varName</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AvarUnique" >varUnique</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="Unique.html#t%3AUnique" >Unique</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AvarType" >varType</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="Type.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetVarName" >setVarName</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetVarUnique" >setVarUnique</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="Unique.html#t%3AUnique" >Unique</A > -> <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetVarType" >setVarType</A > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="Type.html#t%3AType" >Type</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkGlobalVar" >mkGlobalVar</A > :: <A HREF="IdInfo.html#t%3AIdDetails" >IdDetails</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Type.html#t%3AType" >Type</A > -> <A HREF="IdInfo.html#t%3AIdInfo" >IdInfo</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkLocalVar" >mkLocalVar</A > :: <A HREF="IdInfo.html#t%3AIdDetails" >IdDetails</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Type.html#t%3AType" >Type</A > -> <A HREF="IdInfo.html#t%3AIdInfo" >IdInfo</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkExportedLocalVar" >mkExportedLocalVar</A > :: <A HREF="IdInfo.html#t%3AIdDetails" >IdDetails</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Type.html#t%3AType" >Type</A > -> <A HREF="IdInfo.html#t%3AIdInfo" >IdInfo</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AidInfo" >idInfo</A > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="IdInfo.html#t%3AIdInfo" >IdInfo</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AidDetails" >idDetails</A > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="IdInfo.html#t%3AIdDetails" >IdDetails</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AlazySetIdInfo" >lazySetIdInfo</A > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="IdInfo.html#t%3AIdInfo" >IdInfo</A > -> <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetIdDetails" >setIdDetails</A > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="IdInfo.html#t%3AIdDetails" >IdDetails</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AglobaliseId" >globaliseId</A > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetIdExported" >setIdExported</A > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetIdNotExported" >setIdNotExported</A > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisCoVar" >isCoVar</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisId" >isId</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisTyVar" >isTyVar</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisTcTyVar" >isTcTyVar</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisLocalVar" >isLocalVar</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisLocalId" >isLocalId</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisGlobalId" >isGlobalId</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AisExportedId" >isExportedId</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmustHaveLocalBinding" >mustHaveLocalBinding</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ATyVar" >TyVar</A > = <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkTyVar" >mkTyVar</A > :: <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Type.html#t%3AKind" >Kind</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkTcTyVar" >mkTcTyVar</A > :: <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Type.html#t%3AKind" >Kind</A > -> <A HREF="TcType.html#t%3ATcTyVarDetails" >TcTyVarDetails</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkWildCoVar" >mkWildCoVar</A > :: <A HREF="Type.html#t%3AKind" >Kind</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtyVarName" >tyVarName</A > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtyVarKind" >tyVarKind</A > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="Type.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AtcTyVarDetails" >tcTyVarDetails</A > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="TcType.html#t%3ATcTyVarDetails" >TcTyVarDetails</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetTyVarName" >setTyVarName</A > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetTyVarUnique" >setTyVarUnique</A > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="Unique.html#t%3AUnique" >Unique</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetTyVarKind" >setTyVarKind</A > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="Type.html#t%3AKind" >Kind</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%3ACoVar" >CoVar</A > = <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkCoVar" >mkCoVar</A > :: <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Type.html#t%3AKind" >Kind</A > -> <A HREF="Var.html#t%3ACoVar" >CoVar</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcoVarName" >coVarName</A > :: <A HREF="Var.html#t%3ACoVar" >CoVar</A > -> <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetCoVarUnique" >setCoVarUnique</A > :: <A HREF="Var.html#t%3ACoVar" >CoVar</A > -> <A HREF="Unique.html#t%3AUnique" >Unique</A > -> <A HREF="Var.html#t%3ACoVar" >CoVar</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AsetCoVarName" >setCoVarName</A > :: <A HREF="Var.html#t%3ACoVar" >CoVar</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Var.html#t%3ACoVar" >CoVar</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3AId" >Id</A > = <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ADictId" >DictId</A > = <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="1" ><A NAME="1" >The main data type </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:Var" ><A NAME="t%3AVar" ></A ></A ><B >Var</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >Essentially a typed <TT ><A HREF="Name.html#t%3AName" >Name</A ></TT >, that may also contain some additional information about the <TT ><A HREF="Var.html#t%3AVar" >Var</A ></TT > and it's use sites. </TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Var')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:Var" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="../base-4.2.0.2/Data-Eq.html#t%3AEq" >Eq</A > <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base-4.2.0.2/Data-Ord.html#t%3AOrd" >Ord</A > <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="../base-4.2.0.2/Text-Show.html#t%3AShow" >Show</A > <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Outputable.html#t%3AOutputableBndr" >OutputableBndr</A > <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Outputable.html#t%3AOutputable" >Outputable</A > <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Unique.html#t%3AUniquable" >Uniquable</A > <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="Name.html#t%3ANamedThing" >NamedThing</A > <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="2" ><A NAME="2" >Taking <TT ><A HREF="Var.html#t%3AVar" >Var</A ></TT >s apart </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:varName" ><A NAME="v%3AvarName" ></A ></A ><B >varName</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:varUnique" ><A NAME="v%3AvarUnique" ></A ></A ><B >varUnique</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="Unique.html#t%3AUnique" >Unique</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:varType" ><A NAME="v%3AvarType" ></A ></A ><B >varType</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="Type.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="3" ><A NAME="3" >Modifying <TT ><A HREF="Var.html#t%3AVar" >Var</A ></TT >s </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setVarName" ><A NAME="v%3AsetVarName" ></A ></A ><B >setVarName</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setVarUnique" ><A NAME="v%3AsetVarUnique" ></A ></A ><B >setVarUnique</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="Unique.html#t%3AUnique" >Unique</A > -> <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setVarType" ><A NAME="v%3AsetVarType" ></A ></A ><B >setVarType</B > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="Type.html#t%3AType" >Type</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="4" ><A NAME="4" >Constructing, taking apart, modifying <TT ><A HREF="Var.html#t%3AId" >Id</A ></TT >s </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkGlobalVar" ><A NAME="v%3AmkGlobalVar" ></A ></A ><B >mkGlobalVar</B > :: <A HREF="IdInfo.html#t%3AIdDetails" >IdDetails</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Type.html#t%3AType" >Type</A > -> <A HREF="IdInfo.html#t%3AIdInfo" >IdInfo</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkLocalVar" ><A NAME="v%3AmkLocalVar" ></A ></A ><B >mkLocalVar</B > :: <A HREF="IdInfo.html#t%3AIdDetails" >IdDetails</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Type.html#t%3AType" >Type</A > -> <A HREF="IdInfo.html#t%3AIdInfo" >IdInfo</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkExportedLocalVar" ><A NAME="v%3AmkExportedLocalVar" ></A ></A ><B >mkExportedLocalVar</B > :: <A HREF="IdInfo.html#t%3AIdDetails" >IdDetails</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Type.html#t%3AType" >Type</A > -> <A HREF="IdInfo.html#t%3AIdInfo" >IdInfo</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="doc" >Exported <TT ><A HREF="Var.html#t%3AVar" >Var</A ></TT >s will not be removed as dead code </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:idInfo" ><A NAME="v%3AidInfo" ></A ></A ><B >idInfo</B > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="IdInfo.html#t%3AIdInfo" >IdInfo</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:idDetails" ><A NAME="v%3AidDetails" ></A ></A ><B >idDetails</B > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="IdInfo.html#t%3AIdDetails" >IdDetails</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:lazySetIdInfo" ><A NAME="v%3AlazySetIdInfo" ></A ></A ><B >lazySetIdInfo</B > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="IdInfo.html#t%3AIdInfo" >IdInfo</A > -> <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setIdDetails" ><A NAME="v%3AsetIdDetails" ></A ></A ><B >setIdDetails</B > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="IdInfo.html#t%3AIdDetails" >IdDetails</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:globaliseId" ><A NAME="v%3AglobaliseId" ></A ></A ><B >globaliseId</B > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="doc" >If it's a local, make it global </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setIdExported" ><A NAME="v%3AsetIdExported" ></A ></A ><B >setIdExported</B > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="doc" >Exports the given local <TT ><A HREF="Var.html#t%3AId" >Id</A ></TT >. Can also be called on global <TT ><A HREF="Var.html#t%3AId" >Id</A ></TT >s, such as data constructors and class operations, which are born as global <TT ><A HREF="Var.html#t%3AId" >Id</A ></TT >s and automatically exported </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setIdNotExported" ><A NAME="v%3AsetIdNotExported" ></A ></A ><B >setIdNotExported</B > :: <A HREF="Var.html#t%3AId" >Id</A > -> <A HREF="Var.html#t%3AId" >Id</A ></TD ></TR ><TR ><TD CLASS="doc" >We can only do this to LocalIds </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="5" ><A NAME="5" >Predicates </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isCoVar" ><A NAME="v%3AisCoVar" ></A ></A ><B >isCoVar</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isId" ><A NAME="v%3AisId" ></A ></A ><B >isId</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isTyVar" ><A NAME="v%3AisTyVar" ></A ></A ><B >isTyVar</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isTcTyVar" ><A NAME="v%3AisTcTyVar" ></A ></A ><B >isTcTyVar</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isLocalVar" ><A NAME="v%3AisLocalVar" ></A ></A ><B >isLocalVar</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Var.html#v%3AisLocalVar" >isLocalVar</A ></TT > returns <TT >True</TT > for type variables as well as local <TT ><A HREF="Var.html#t%3AId" >Id</A ></TT >s These are the variables that we need to pay attention to when finding free variables, or doing dependency analysis. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isLocalId" ><A NAME="v%3AisLocalId" ></A ></A ><B >isLocalId</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isGlobalId" ><A NAME="v%3AisGlobalId" ></A ></A ><B >isGlobalId</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:isExportedId" ><A NAME="v%3AisExportedId" ></A ></A ><B >isExportedId</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" >isExportedIdVar means "don't throw this away" </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mustHaveLocalBinding" ><A NAME="v%3AmustHaveLocalBinding" ></A ></A ><B >mustHaveLocalBinding</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="../base-4.2.0.2/Data-Bool.html#t%3ABool" >Bool</A ></TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Var.html#v%3AmustHaveLocalBinding" >mustHaveLocalBinding</A ></TT > returns <TT >True</TT > of <TT ><A HREF="Var.html#t%3AId" >Id</A ></TT >s and <TT ><A HREF="Var.html#t%3ATyVar" >TyVar</A ></TT >s that must have a binding in this module. The converse is not quite right: there are some global <TT ><A HREF="Var.html#t%3AId" >Id</A ></TT >s that must have bindings, such as record selectors. But that doesn't matter, because it's only used for assertions </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="6" ><A NAME="6" >Type variable data type </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:TyVar" ><A NAME="t%3ATyVar" ></A ></A ><B >TyVar</B > = <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="7" ><A NAME="7" >Constructing <TT ><A HREF="Var.html#t%3ATyVar" >TyVar</A ></TT >s </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkTyVar" ><A NAME="v%3AmkTyVar" ></A ></A ><B >mkTyVar</B > :: <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Type.html#t%3AKind" >Kind</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkTcTyVar" ><A NAME="v%3AmkTcTyVar" ></A ></A ><B >mkTcTyVar</B > :: <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Type.html#t%3AKind" >Kind</A > -> <A HREF="TcType.html#t%3ATcTyVarDetails" >TcTyVarDetails</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkWildCoVar" ><A NAME="v%3AmkWildCoVar" ></A ></A ><B >mkWildCoVar</B > :: <A HREF="Type.html#t%3AKind" >Kind</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="doc" >Create a type variable that is never referred to, so its unique doesn't matter </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="8" ><A NAME="8" >Taking <TT ><A HREF="Var.html#t%3ATyVar" >TyVar</A ></TT >s apart </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tyVarName" ><A NAME="v%3AtyVarName" ></A ></A ><B >tyVarName</B > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tyVarKind" ><A NAME="v%3AtyVarKind" ></A ></A ><B >tyVarKind</B > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="Type.html#t%3AKind" >Kind</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:tcTyVarDetails" ><A NAME="v%3AtcTyVarDetails" ></A ></A ><B >tcTyVarDetails</B > :: <A HREF="Var.html#t%3AVar" >Var</A > -> <A HREF="TcType.html#t%3ATcTyVarDetails" >TcTyVarDetails</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="9" ><A NAME="9" >Modifying <TT ><A HREF="Var.html#t%3ATyVar" >TyVar</A ></TT >s </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setTyVarName" ><A NAME="v%3AsetTyVarName" ></A ></A ><B >setTyVarName</B > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setTyVarUnique" ><A NAME="v%3AsetTyVarUnique" ></A ></A ><B >setTyVarUnique</B > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="Unique.html#t%3AUnique" >Unique</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setTyVarKind" ><A NAME="v%3AsetTyVarKind" ></A ></A ><B >setTyVarKind</B > :: <A HREF="Var.html#t%3ATyVar" >TyVar</A > -> <A HREF="Type.html#t%3AKind" >Kind</A > -> <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="10" ><A NAME="10" >Coercion variable data type </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:CoVar" ><A NAME="t%3ACoVar" ></A ></A ><B >CoVar</B > = <A HREF="Var.html#t%3ATyVar" >TyVar</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="11" ><A NAME="11" >Constructing <TT ><A HREF="Var.html#t%3ACoVar" >CoVar</A ></TT >s </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkCoVar" ><A NAME="v%3AmkCoVar" ></A ></A ><B >mkCoVar</B > :: <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Type.html#t%3AKind" >Kind</A > -> <A HREF="Var.html#t%3ACoVar" >CoVar</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="12" ><A NAME="12" >Taking <TT ><A HREF="Var.html#t%3ACoVar" >CoVar</A ></TT >s apart </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:coVarName" ><A NAME="v%3AcoVarName" ></A ></A ><B >coVarName</B > :: <A HREF="Var.html#t%3ACoVar" >CoVar</A > -> <A HREF="Name.html#t%3AName" >Name</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section2" ><A NAME="13" ><A NAME="13" >Modifying <TT ><A HREF="Var.html#t%3ACoVar" >CoVar</A ></TT >s </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setCoVarUnique" ><A NAME="v%3AsetCoVarUnique" ></A ></A ><B >setCoVarUnique</B > :: <A HREF="Var.html#t%3ACoVar" >CoVar</A > -> <A HREF="Unique.html#t%3AUnique" >Unique</A > -> <A HREF="Var.html#t%3ACoVar" >CoVar</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:setCoVarName" ><A NAME="v%3AsetCoVarName" ></A ></A ><B >setCoVarName</B > :: <A HREF="Var.html#t%3ACoVar" >CoVar</A > -> <A HREF="Name.html#t%3AName" >Name</A > -> <A HREF="Var.html#t%3ACoVar" >CoVar</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" ><A NAME="14" ><A NAME="14" ><TT ><A HREF="Var.html#t%3AVar" >Var</A ></TT > type synonyms </A ></A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:Id" ><A NAME="t%3AId" ></A ></A ><B >Id</B > = <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:DictId" ><A NAME="t%3ADictId" ></A ></A ><B >DictId</B > = <A HREF="Var.html#t%3AVar" >Var</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="botbar" >Produced by <A HREF="http://www.haskell.org/haddock/" >Haddock</A > version 2.6.1</TD ></TR ></TABLE ></BODY ></HTML >