<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Var</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[ window.onload = function () {pageLoad();setSynopsis("mini_Var.html");}; //]]> </script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">ghc-7.4.2: The GHC API</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Var</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">The main data type and synonyms </a><ul><li><a href="#g:2">Taking <code><a href="Var.html#t:Var">Var</a></code>s apart </a></li><li><a href="#g:3">Modifying <code><a href="Var.html#t:Var">Var</a></code>s </a></li><li><a href="#g:4">Constructing, taking apart, modifying <code><a href="Var.html#t:Id">Id</a></code>s </a></li><li><a href="#g:5">Predicates </a></li><li><a href="#g:6">Constructing <code><a href="Var.html#t:TyVar">TyVar</a></code>s </a></li><li><a href="#g:7">Taking <code><a href="Var.html#t:TyVar">TyVar</a></code>s apart </a></li><li><a href="#g:8">Modifying <code><a href="Var.html#t:TyVar">TyVar</a></code>s </a></li></ul></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p><a name="name_types"></a> GHC uses several kinds of name internally: </p><ul><li> <code><a href="OccName.html#t:OccName">OccName</a></code>: see <a href="OccName.html#name_types">OccName</a> </li><li> <code><a href="RdrName.html#t:RdrName">RdrName</a></code>: see <a href="RdrName.html#name_types">RdrName</a> </li><li> <code><a href="Name.html#t:Name">Name</a></code>: see <a href="Name.html#name_types">Name</a> </li><li> <code><a href="Id.html#t:Id">Id</a></code>: see <a href="Id.html#name_types">Id</a> </li><li> <code><a href="Var.html#t:Var">Var</a></code> is a synonym for the <code><a href="Id.html#t:Id">Id</a></code> type but it may additionally potentially contain type variables, which have a <code><a href="Kind.html#t:Kind">Kind</a></code> rather than a <code><a href="Type.html#t:Type">Type</a></code> and only contain some extra details during typechecking. </li></ul><p>These <code><a href="Var.html#t:Var">Var</a></code> names may either be global or local, see <a href="Var.html#globalvslocal">Var</a> </p><p><a name="globalvslocal"></a> Global <code><a href="Var.html#t:Id">Id</a></code>s and <code><a href="Var.html#t:Var">Var</a></code>s are those that are imported or correspond to a data constructor, primitive operation, or record selectors. Local <code><a href="Var.html#t:Id">Id</a></code>s and <code><a href="Var.html#t:Var">Var</a></code>s are those bound within an expression (e.g. by a lambda) or at the top level of the module being compiled. </p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:Var">Var</a> </li><li class="src short"><span class="keyword">type</span> <a href="#t:TyVar">TyVar</a> = <a href="Var.html#t:Var">Var</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CoVar">CoVar</a> = <a href="Var.html#t:Id">Id</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:Id">Id</a> = <a href="Var.html#t:Var">Var</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:KindVar">KindVar</a> = <a href="Var.html#t:Var">Var</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:DictId">DictId</a> = <a href="Var.html#t:EvId">EvId</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:DFunId">DFunId</a> = <a href="Var.html#t:Id">Id</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:EvVar">EvVar</a> = <a href="Var.html#t:EvId">EvId</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:EqVar">EqVar</a> = <a href="Var.html#t:EvId">EvId</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:EvId">EvId</a> = <a href="Var.html#t:Id">Id</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:IpId">IpId</a> = <a href="Var.html#t:EvId">EvId</a></li><li class="src short"><a href="#v:varName">varName</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="Name.html#t:Name">Name</a></li><li class="src short"><a href="#v:varUnique">varUnique</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="Unique.html#t:Unique">Unique</a></li><li class="src short"><a href="#v:varType">varType</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:setVarName">setVarName</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="Name.html#t:Name">Name</a> -> <a href="Var.html#t:Var">Var</a></li><li class="src short"><a href="#v:setVarUnique">setVarUnique</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="Unique.html#t:Unique">Unique</a> -> <a href="Var.html#t:Var">Var</a></li><li class="src short"><a href="#v:setVarType">setVarType</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="Type.html#t:Type">Type</a> -> <a href="Var.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkGlobalVar">mkGlobalVar</a> :: <a href="IdInfo.html#t:IdDetails">IdDetails</a> -> <a href="Name.html#t:Name">Name</a> -> <a href="Type.html#t:Type">Type</a> -> <a href="IdInfo.html#t:IdInfo">IdInfo</a> -> <a href="Var.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkLocalVar">mkLocalVar</a> :: <a href="IdInfo.html#t:IdDetails">IdDetails</a> -> <a href="Name.html#t:Name">Name</a> -> <a href="Type.html#t:Type">Type</a> -> <a href="IdInfo.html#t:IdInfo">IdInfo</a> -> <a href="Var.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkExportedLocalVar">mkExportedLocalVar</a> :: <a href="IdInfo.html#t:IdDetails">IdDetails</a> -> <a href="Name.html#t:Name">Name</a> -> <a href="Type.html#t:Type">Type</a> -> <a href="IdInfo.html#t:IdInfo">IdInfo</a> -> <a href="Var.html#t:Id">Id</a></li><li class="src short"><a href="#v:mkCoVar">mkCoVar</a> :: <a href="Name.html#t:Name">Name</a> -> <a href="Type.html#t:Type">Type</a> -> <a href="Var.html#t:CoVar">CoVar</a></li><li class="src short"><a href="#v:idInfo">idInfo</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="IdInfo.html#t:IdInfo">IdInfo</a></li><li class="src short"><a href="#v:idDetails">idDetails</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="IdInfo.html#t:IdDetails">IdDetails</a></li><li class="src short"><a href="#v:lazySetIdInfo">lazySetIdInfo</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="IdInfo.html#t:IdInfo">IdInfo</a> -> <a href="Var.html#t:Var">Var</a></li><li class="src short"><a href="#v:setIdDetails">setIdDetails</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="IdInfo.html#t:IdDetails">IdDetails</a> -> <a href="Var.html#t:Id">Id</a></li><li class="src short"><a href="#v:globaliseId">globaliseId</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="Var.html#t:Id">Id</a></li><li class="src short"><a href="#v:setIdExported">setIdExported</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="Var.html#t:Id">Id</a></li><li class="src short"><a href="#v:setIdNotExported">setIdNotExported</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="Var.html#t:Id">Id</a></li><li class="src short"><a href="#v:isId">isId</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isTyVar">isTyVar</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isTcTyVar">isTcTyVar</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isLocalVar">isLocalVar</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isLocalId">isLocalId</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isGlobalId">isGlobalId</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:isExportedId">isExportedId</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:mustHaveLocalBinding">mustHaveLocalBinding</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:mkTyVar">mkTyVar</a> :: <a href="Name.html#t:Name">Name</a> -> <a href="Kind.html#t:Kind">Kind</a> -> <a href="Var.html#t:TyVar">TyVar</a></li><li class="src short"><a href="#v:mkTcTyVar">mkTcTyVar</a> :: <a href="Name.html#t:Name">Name</a> -> <a href="Kind.html#t:Kind">Kind</a> -> <a href="TcType.html#t:TcTyVarDetails">TcTyVarDetails</a> -> <a href="Var.html#t:TyVar">TyVar</a></li><li class="src short"><a href="#v:mkKindVar">mkKindVar</a> :: <a href="Name.html#t:Name">Name</a> -> SuperKind -> <a href="Var.html#t:KindVar">KindVar</a></li><li class="src short"><a href="#v:tyVarName">tyVarName</a> :: <a href="Var.html#t:TyVar">TyVar</a> -> <a href="Name.html#t:Name">Name</a></li><li class="src short"><a href="#v:tyVarKind">tyVarKind</a> :: <a href="Var.html#t:TyVar">TyVar</a> -> <a href="Kind.html#t:Kind">Kind</a></li><li class="src short"><a href="#v:tcTyVarDetails">tcTyVarDetails</a> :: <a href="Var.html#t:TyVar">TyVar</a> -> <a href="TcType.html#t:TcTyVarDetails">TcTyVarDetails</a></li><li class="src short"><a href="#v:setTcTyVarDetails">setTcTyVarDetails</a> :: <a href="Var.html#t:TyVar">TyVar</a> -> <a href="TcType.html#t:TcTyVarDetails">TcTyVarDetails</a> -> <a href="Var.html#t:TyVar">TyVar</a></li><li class="src short"><a href="#v:setTyVarName">setTyVarName</a> :: <a href="Var.html#t:TyVar">TyVar</a> -> <a href="Name.html#t:Name">Name</a> -> <a href="Var.html#t:TyVar">TyVar</a></li><li class="src short"><a href="#v:setTyVarUnique">setTyVarUnique</a> :: <a href="Var.html#t:TyVar">TyVar</a> -> <a href="Unique.html#t:Unique">Unique</a> -> <a href="Var.html#t:TyVar">TyVar</a></li><li class="src short"><a href="#v:setTyVarKind">setTyVarKind</a> :: <a href="Var.html#t:TyVar">TyVar</a> -> <a href="Kind.html#t:Kind">Kind</a> -> <a href="Var.html#t:TyVar">TyVar</a></li><li class="src short"><a href="#v:updateTyVarKind">updateTyVarKind</a> :: (<a href="Kind.html#t:Kind">Kind</a> -> <a href="Kind.html#t:Kind">Kind</a>) -> <a href="Var.html#t:TyVar">TyVar</a> -> <a href="Var.html#t:TyVar">TyVar</a></li><li class="src short"><a href="#v:updateTyVarKindM">updateTyVarKindM</a> :: <a href="../base-4.5.1.0/Control-Monad.html#t:Monad">Monad</a> m => (<a href="Kind.html#t:Kind">Kind</a> -> m <a href="Kind.html#t:Kind">Kind</a>) -> <a href="Var.html#t:TyVar">TyVar</a> -> m <a href="Var.html#t:TyVar">TyVar</a></li></ul></div><div id="interface"><h1 id="g:1">The main data type and synonyms </h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Var" class="def">Var</a> </p><div class="doc"><p>Essentially a typed <code><a href="Name.html#t:Name">Name</a></code>, that may also contain some additional information about the <code><a href="Var.html#t:Var">Var</a></code> and it's use sites. </p></div><div class="subs instances"><p id="control.i:Var" class="caption collapser" onclick="toggleSection('i:Var')">Instances</p><div id="section.i:Var" class="show"><table><tr><td class="src"><a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Var.html#t:Var">Var</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.5.1.0/Data-Data.html#t:Data">Data</a> <a href="Var.html#t:Var">Var</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.5.1.0/Data-Ord.html#t:Ord">Ord</a> <a href="Var.html#t:Var">Var</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.5.1.0/Text-Show.html#t:Show">Show</a> <a href="Var.html#t:Var">Var</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="../base-4.5.1.0/Data-Typeable-Internal.html#t:Typeable">Typeable</a> <a href="Var.html#t:Var">Var</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Outputable.html#t:OutputableBndr">OutputableBndr</a> <a href="Var.html#t:Var">Var</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Outputable.html#t:Outputable">Outputable</a> <a href="Var.html#t:Var">Var</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Unique.html#t:Uniquable">Uniquable</a> <a href="Var.html#t:Var">Var</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Name.html#t:NamedThing">NamedThing</a> <a href="Var.html#t:Var">Var</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:TyVar" class="def">TyVar</a> = <a href="Var.html#t:Var">Var</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CoVar" class="def">CoVar</a> = <a href="Var.html#t:Id">Id</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Id" class="def">Id</a> = <a href="Var.html#t:Var">Var</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:KindVar" class="def">KindVar</a> = <a href="Var.html#t:Var">Var</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:DictId" class="def">DictId</a> = <a href="Var.html#t:EvId">EvId</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:DFunId" class="def">DFunId</a> = <a href="Var.html#t:Id">Id</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:EvVar" class="def">EvVar</a> = <a href="Var.html#t:EvId">EvId</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:EqVar" class="def">EqVar</a> = <a href="Var.html#t:EvId">EvId</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:EvId" class="def">EvId</a> = <a href="Var.html#t:Id">Id</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:IpId" class="def">IpId</a> = <a href="Var.html#t:EvId">EvId</a></p></div><h2 id="g:2">Taking <code><a href="Var.html#t:Var">Var</a></code>s apart </h2><div class="top"><p class="src"><a name="v:varName" class="def">varName</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="Name.html#t:Name">Name</a></p></div><div class="top"><p class="src"><a name="v:varUnique" class="def">varUnique</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="Unique.html#t:Unique">Unique</a></p></div><div class="top"><p class="src"><a name="v:varType" class="def">varType</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="Kind.html#t:Kind">Kind</a></p><div class="doc"><p>The type or kind of the <code><a href="Var.html#t:Var">Var</a></code> in question </p></div></div><h2 id="g:3">Modifying <code><a href="Var.html#t:Var">Var</a></code>s </h2><div class="top"><p class="src"><a name="v:setVarName" class="def">setVarName</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="Name.html#t:Name">Name</a> -> <a href="Var.html#t:Var">Var</a></p></div><div class="top"><p class="src"><a name="v:setVarUnique" class="def">setVarUnique</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="Unique.html#t:Unique">Unique</a> -> <a href="Var.html#t:Var">Var</a></p></div><div class="top"><p class="src"><a name="v:setVarType" class="def">setVarType</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="Type.html#t:Type">Type</a> -> <a href="Var.html#t:Id">Id</a></p></div><h2 id="g:4">Constructing, taking apart, modifying <code><a href="Var.html#t:Id">Id</a></code>s </h2><div class="top"><p class="src"><a name="v:mkGlobalVar" class="def">mkGlobalVar</a> :: <a href="IdInfo.html#t:IdDetails">IdDetails</a> -> <a href="Name.html#t:Name">Name</a> -> <a href="Type.html#t:Type">Type</a> -> <a href="IdInfo.html#t:IdInfo">IdInfo</a> -> <a href="Var.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:mkLocalVar" class="def">mkLocalVar</a> :: <a href="IdInfo.html#t:IdDetails">IdDetails</a> -> <a href="Name.html#t:Name">Name</a> -> <a href="Type.html#t:Type">Type</a> -> <a href="IdInfo.html#t:IdInfo">IdInfo</a> -> <a href="Var.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:mkExportedLocalVar" class="def">mkExportedLocalVar</a> :: <a href="IdInfo.html#t:IdDetails">IdDetails</a> -> <a href="Name.html#t:Name">Name</a> -> <a href="Type.html#t:Type">Type</a> -> <a href="IdInfo.html#t:IdInfo">IdInfo</a> -> <a href="Var.html#t:Id">Id</a></p><div class="doc"><p>Exported <code><a href="Var.html#t:Var">Var</a></code>s will not be removed as dead code </p></div></div><div class="top"><p class="src"><a name="v:mkCoVar" class="def">mkCoVar</a> :: <a href="Name.html#t:Name">Name</a> -> <a href="Type.html#t:Type">Type</a> -> <a href="Var.html#t:CoVar">CoVar</a></p></div><div class="top"><p class="src"><a name="v:idInfo" class="def">idInfo</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="IdInfo.html#t:IdInfo">IdInfo</a></p></div><div class="top"><p class="src"><a name="v:idDetails" class="def">idDetails</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="IdInfo.html#t:IdDetails">IdDetails</a></p></div><div class="top"><p class="src"><a name="v:lazySetIdInfo" class="def">lazySetIdInfo</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="IdInfo.html#t:IdInfo">IdInfo</a> -> <a href="Var.html#t:Var">Var</a></p></div><div class="top"><p class="src"><a name="v:setIdDetails" class="def">setIdDetails</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="IdInfo.html#t:IdDetails">IdDetails</a> -> <a href="Var.html#t:Id">Id</a></p></div><div class="top"><p class="src"><a name="v:globaliseId" class="def">globaliseId</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="Var.html#t:Id">Id</a></p><div class="doc"><p>If it's a local, make it global </p></div></div><div class="top"><p class="src"><a name="v:setIdExported" class="def">setIdExported</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="Var.html#t:Id">Id</a></p><div class="doc"><p>Exports the given local <code><a href="Var.html#t:Id">Id</a></code>. Can also be called on global <code><a href="Var.html#t:Id">Id</a></code>s, such as data constructors and class operations, which are born as global <code><a href="Var.html#t:Id">Id</a></code>s and automatically exported </p></div></div><div class="top"><p class="src"><a name="v:setIdNotExported" class="def">setIdNotExported</a> :: <a href="Var.html#t:Id">Id</a> -> <a href="Var.html#t:Id">Id</a></p><div class="doc"><p>We can only do this to LocalIds </p></div></div><h2 id="g:5">Predicates </h2><div class="top"><p class="src"><a name="v:isId" class="def">isId</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isTyVar" class="def">isTyVar</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isTcTyVar" class="def">isTcTyVar</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isLocalVar" class="def">isLocalVar</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p><code><a href="Var.html#v:isLocalVar">isLocalVar</a></code> returns <code>True</code> for type variables as well as local <code><a href="Var.html#t:Id">Id</a></code>s These are the variables that we need to pay attention to when finding free variables, or doing dependency analysis. </p></div></div><div class="top"><p class="src"><a name="v:isLocalId" class="def">isLocalId</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isGlobalId" class="def">isGlobalId</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p></div><div class="top"><p class="src"><a name="v:isExportedId" class="def">isExportedId</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p><code>isExportedIdVar</code> means "don't throw this away" </p></div></div><div class="top"><p class="src"><a name="v:mustHaveLocalBinding" class="def">mustHaveLocalBinding</a> :: <a href="Var.html#t:Var">Var</a> -> <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p><code><a href="Var.html#v:mustHaveLocalBinding">mustHaveLocalBinding</a></code> returns <code>True</code> of <code><a href="Var.html#t:Id">Id</a></code>s and <code><a href="Var.html#t:TyVar">TyVar</a></code>s that must have a binding in this module. The converse is not quite right: there are some global <code><a href="Var.html#t:Id">Id</a></code>s that must have bindings, such as record selectors. But that doesn't matter, because it's only used for assertions </p></div></div><h2 id="g:6">Constructing <code><a href="Var.html#t:TyVar">TyVar</a></code>s </h2><div class="top"><p class="src"><a name="v:mkTyVar" class="def">mkTyVar</a> :: <a href="Name.html#t:Name">Name</a> -> <a href="Kind.html#t:Kind">Kind</a> -> <a href="Var.html#t:TyVar">TyVar</a></p></div><div class="top"><p class="src"><a name="v:mkTcTyVar" class="def">mkTcTyVar</a> :: <a href="Name.html#t:Name">Name</a> -> <a href="Kind.html#t:Kind">Kind</a> -> <a href="TcType.html#t:TcTyVarDetails">TcTyVarDetails</a> -> <a href="Var.html#t:TyVar">TyVar</a></p></div><div class="top"><p class="src"><a name="v:mkKindVar" class="def">mkKindVar</a> :: <a href="Name.html#t:Name">Name</a> -> SuperKind -> <a href="Var.html#t:KindVar">KindVar</a></p></div><h2 id="g:7">Taking <code><a href="Var.html#t:TyVar">TyVar</a></code>s apart </h2><div class="top"><p class="src"><a name="v:tyVarName" class="def">tyVarName</a> :: <a href="Var.html#t:TyVar">TyVar</a> -> <a href="Name.html#t:Name">Name</a></p></div><div class="top"><p class="src"><a name="v:tyVarKind" class="def">tyVarKind</a> :: <a href="Var.html#t:TyVar">TyVar</a> -> <a href="Kind.html#t:Kind">Kind</a></p></div><div class="top"><p class="src"><a name="v:tcTyVarDetails" class="def">tcTyVarDetails</a> :: <a href="Var.html#t:TyVar">TyVar</a> -> <a href="TcType.html#t:TcTyVarDetails">TcTyVarDetails</a></p></div><div class="top"><p class="src"><a name="v:setTcTyVarDetails" class="def">setTcTyVarDetails</a> :: <a href="Var.html#t:TyVar">TyVar</a> -> <a href="TcType.html#t:TcTyVarDetails">TcTyVarDetails</a> -> <a href="Var.html#t:TyVar">TyVar</a></p></div><h2 id="g:8">Modifying <code><a href="Var.html#t:TyVar">TyVar</a></code>s </h2><div class="top"><p class="src"><a name="v:setTyVarName" class="def">setTyVarName</a> :: <a href="Var.html#t:TyVar">TyVar</a> -> <a href="Name.html#t:Name">Name</a> -> <a href="Var.html#t:TyVar">TyVar</a></p></div><div class="top"><p class="src"><a name="v:setTyVarUnique" class="def">setTyVarUnique</a> :: <a href="Var.html#t:TyVar">TyVar</a> -> <a href="Unique.html#t:Unique">Unique</a> -> <a href="Var.html#t:TyVar">TyVar</a></p></div><div class="top"><p class="src"><a name="v:setTyVarKind" class="def">setTyVarKind</a> :: <a href="Var.html#t:TyVar">TyVar</a> -> <a href="Kind.html#t:Kind">Kind</a> -> <a href="Var.html#t:TyVar">TyVar</a></p></div><div class="top"><p class="src"><a name="v:updateTyVarKind" class="def">updateTyVarKind</a> :: (<a href="Kind.html#t:Kind">Kind</a> -> <a href="Kind.html#t:Kind">Kind</a>) -> <a href="Var.html#t:TyVar">TyVar</a> -> <a href="Var.html#t:TyVar">TyVar</a></p></div><div class="top"><p class="src"><a name="v:updateTyVarKindM" class="def">updateTyVarKindM</a> :: <a href="../base-4.5.1.0/Control-Monad.html#t:Monad">Monad</a> m => (<a href="Kind.html#t:Kind">Kind</a> -> m <a href="Kind.html#t:Kind">Kind</a>) -> <a href="Var.html#t:TyVar">TyVar</a> -> m <a href="Var.html#t:TyVar">TyVar</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>