Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 1f2b142b9d2ef4849a6f5316fa1c5b12 > files > 2093

ghc-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
>VarEnv</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_VarEnv.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"
>VarEnv</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"
>Var, Id and TyVar environments (maps)
</A
></DT
><DD
><DL
><DT
><A HREF="#2"
>Manipulating these environments
</A
></DT
></DL
></DD
><DT
><A HREF="#3"
>The InScopeSet type
</A
></DT
><DD
><DL
><DT
><A HREF="#4"
>Operations on InScopeSets
</A
></DT
></DL
></DD
><DT
><A HREF="#5"
>The RnEnv2 type
</A
></DT
><DD
><DL
><DT
><A HREF="#6"
>Operations on RnEnv2s
</A
></DT
></DL
></DD
><DT
><A HREF="#7"
>TidyEnv and its operation
</A
></DT
></DL
></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%3AVarEnv"
>VarEnv</A
> elt = <A HREF="UniqFM.html#t%3AUniqFM"
>UniqFM</A
> elt</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AIdEnv"
>IdEnv</A
> elt = <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> elt</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3ATyVarEnv"
>TyVarEnv</A
> elt = <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> elt</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AemptyVarEnv"
>emptyVarEnv</A
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AunitVarEnv"
>unitVarEnv</A
> ::  <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkVarEnv"
>mkVarEnv</A
> ::  [(<A HREF="Var.html#t%3AVar"
>Var</A
>, a)] -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AelemVarEnv"
>elemVarEnv</A
> ::  <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> 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%3AvarEnvElts"
>varEnvElts</A
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; [a]</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AvarEnvKeys"
>varEnvKeys</A
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> 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%3AextendVarEnv"
>extendVarEnv</A
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AextendVarEnv_C"
>extendVarEnv_C</A
> ::  (a -&gt; a -&gt; a) -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AextendVarEnvList"
>extendVarEnvList</A
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; [(<A HREF="Var.html#t%3AVar"
>Var</A
>, a)] -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AplusVarEnv"
>plusVarEnv</A
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AplusVarEnv_C"
>plusVarEnv_C</A
> ::  (a -&gt; a -&gt; a) -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AdelVarEnvList"
>delVarEnvList</A
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; [<A HREF="Var.html#t%3AVar"
>Var</A
>] -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AdelVarEnv"
>delVarEnv</A
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AlookupVarEnv"
>lookupVarEnv</A
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AlookupVarEnv_NF"
>lookupVarEnv_NF</A
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AlookupWithDefaultVarEnv"
>lookupWithDefaultVarEnv</A
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; a -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmapVarEnv"
>mapVarEnv</A
> ::  (a -&gt; b) -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AzipVarEnv"
>zipVarEnv</A
> ::  [<A HREF="Var.html#t%3AVar"
>Var</A
>] -&gt; [a] -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmodifyVarEnv"
>modifyVarEnv</A
> ::  (a -&gt; a) -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmodifyVarEnv_Directly"
>modifyVarEnv_Directly</A
> ::  (a -&gt; a) -&gt; <A HREF="UniqFM.html#t%3AUniqFM"
>UniqFM</A
> a -&gt; <A HREF="Unique.html#t%3AUnique"
>Unique</A
> -&gt; <A HREF="UniqFM.html#t%3AUniqFM"
>UniqFM</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AisEmptyVarEnv"
>isEmptyVarEnv</A
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> 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%3AfoldVarEnv"
>foldVarEnv</A
> ::  (a -&gt; b -&gt; b) -&gt; b -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; b</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AelemVarEnvByKey"
>elemVarEnvByKey</A
> ::  <A HREF="Unique.html#t%3AUnique"
>Unique</A
> -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> 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%3AlookupVarEnv_Directly"
>lookupVarEnv_Directly</A
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="Unique.html#t%3AUnique"
>Unique</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AfilterVarEnv_Directly"
>filterVarEnv_Directly</A
> ::  (<A HREF="Unique.html#t%3AUnique"
>Unique</A
> -&gt; a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
>) -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3AInScopeSet"
>InScopeSet</A
> </TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AemptyInScopeSet"
>emptyInScopeSet</A
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkInScopeSet"
>mkInScopeSet</A
> :: <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> <A HREF="Var.html#t%3AVar"
>Var</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%3AdelInScopeSet"
>delInScopeSet</A
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</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%3AextendInScopeSet"
>extendInScopeSet</A
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</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%3AextendInScopeSetList"
>extendInScopeSetList</A
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; [<A HREF="Var.html#t%3AVar"
>Var</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%3AextendInScopeSetSet"
>extendInScopeSetSet</A
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> <A HREF="Var.html#t%3AVar"
>Var</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%3AmodifyInScopeSet"
>modifyInScopeSet</A
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</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%3AgetInScopeVars"
>getInScopeVars</A
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> <A HREF="Var.html#t%3AVar"
>Var</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AlookupInScope"
>lookupInScope</A
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Var.html#t%3AVar"
>Var</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AelemInScopeSet"
>elemInScopeSet</A
> :: <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</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%3AuniqAway"
>uniqAway</A
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ARnEnv2"
>RnEnv2</A
> </TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmkRnEnv2"
>mkRnEnv2</A
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArnBndr2"
>rnBndr2</A
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArnBndrs2"
>rnBndrs2</A
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; [<A HREF="Var.html#t%3AVar"
>Var</A
>] -&gt; [<A HREF="Var.html#t%3AVar"
>Var</A
>] -&gt; <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArnOccL"
>rnOccL</A
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArnOccR"
>rnOccR</A
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AinRnEnvL"
>inRnEnvL</A
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <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%3AinRnEnvR"
>inRnEnvR</A
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <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%3ArnBndrL"
>rnBndrL</A
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; (<A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
>, <A HREF="Var.html#t%3AVar"
>Var</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArnBndrR"
>rnBndrR</A
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; (<A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
>, <A HREF="Var.html#t%3AVar"
>Var</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AnukeRnEnvL"
>nukeRnEnvL</A
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AnukeRnEnvR"
>nukeRnEnvR</A
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AextendRnInScopeList"
>extendRnInScopeList</A
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; [<A HREF="Var.html#t%3AVar"
>Var</A
>] -&gt; <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArnInScope"
>rnInScope</A
> :: <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</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%3ArnInScopeSet"
>rnInScopeSet</A
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</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%3AlookupRnInScope"
>lookupRnInScope</A
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <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%3ATidyEnv"
>TidyEnv</A
> = (<A HREF="OccName.html#t%3ATidyOccEnv"
>TidyOccEnv</A
>, <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> <A HREF="Var.html#t%3AVar"
>Var</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AemptyTidyEnv"
>emptyTidyEnv</A
> :: <A HREF="VarEnv.html#t%3ATidyEnv"
>TidyEnv</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"
>Var, Id and TyVar environments (maps)
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:VarEnv"
><A NAME="t%3AVarEnv"
></A
></A
><B
>VarEnv</B
> elt = <A HREF="UniqFM.html#t%3AUniqFM"
>UniqFM</A
> elt</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:IdEnv"
><A NAME="t%3AIdEnv"
></A
></A
><B
>IdEnv</B
> elt = <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> elt</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:TyVarEnv"
><A NAME="t%3ATyVarEnv"
></A
></A
><B
>TyVarEnv</B
> elt = <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> elt</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="2"
><A NAME="2"
>Manipulating these environments
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:emptyVarEnv"
><A NAME="v%3AemptyVarEnv"
></A
></A
><B
>emptyVarEnv</B
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:unitVarEnv"
><A NAME="v%3AunitVarEnv"
></A
></A
><B
>unitVarEnv</B
> ::  <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkVarEnv"
><A NAME="v%3AmkVarEnv"
></A
></A
><B
>mkVarEnv</B
> ::  [(<A HREF="Var.html#t%3AVar"
>Var</A
>, a)] -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:elemVarEnv"
><A NAME="v%3AelemVarEnv"
></A
></A
><B
>elemVarEnv</B
> ::  <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> 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:varEnvElts"
><A NAME="v%3AvarEnvElts"
></A
></A
><B
>varEnvElts</B
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; [a]</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:varEnvKeys"
><A NAME="v%3AvarEnvKeys"
></A
></A
><B
>varEnvKeys</B
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> 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:extendVarEnv"
><A NAME="v%3AextendVarEnv"
></A
></A
><B
>extendVarEnv</B
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:extendVarEnv_C"
><A NAME="v%3AextendVarEnv_C"
></A
></A
><B
>extendVarEnv_C</B
> ::  (a -&gt; a -&gt; a) -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:extendVarEnvList"
><A NAME="v%3AextendVarEnvList"
></A
></A
><B
>extendVarEnvList</B
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; [(<A HREF="Var.html#t%3AVar"
>Var</A
>, a)] -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:plusVarEnv"
><A NAME="v%3AplusVarEnv"
></A
></A
><B
>plusVarEnv</B
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:plusVarEnv_C"
><A NAME="v%3AplusVarEnv_C"
></A
></A
><B
>plusVarEnv_C</B
> ::  (a -&gt; a -&gt; a) -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:delVarEnvList"
><A NAME="v%3AdelVarEnvList"
></A
></A
><B
>delVarEnvList</B
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; [<A HREF="Var.html#t%3AVar"
>Var</A
>] -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:delVarEnv"
><A NAME="v%3AdelVarEnv"
></A
></A
><B
>delVarEnv</B
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:lookupVarEnv"
><A NAME="v%3AlookupVarEnv"
></A
></A
><B
>lookupVarEnv</B
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:lookupVarEnv_NF"
><A NAME="v%3AlookupVarEnv_NF"
></A
></A
><B
>lookupVarEnv_NF</B
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:lookupWithDefaultVarEnv"
><A NAME="v%3AlookupWithDefaultVarEnv"
></A
></A
><B
>lookupWithDefaultVarEnv</B
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; a -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mapVarEnv"
><A NAME="v%3AmapVarEnv"
></A
></A
><B
>mapVarEnv</B
> ::  (a -&gt; b) -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> b</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:zipVarEnv"
><A NAME="v%3AzipVarEnv"
></A
></A
><B
>zipVarEnv</B
> ::  [<A HREF="Var.html#t%3AVar"
>Var</A
>] -&gt; [a] -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:modifyVarEnv"
><A NAME="v%3AmodifyVarEnv"
></A
></A
><B
>modifyVarEnv</B
> ::  (a -&gt; a) -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:modifyVarEnv_Directly"
><A NAME="v%3AmodifyVarEnv_Directly"
></A
></A
><B
>modifyVarEnv_Directly</B
> ::  (a -&gt; a) -&gt; <A HREF="UniqFM.html#t%3AUniqFM"
>UniqFM</A
> a -&gt; <A HREF="Unique.html#t%3AUnique"
>Unique</A
> -&gt; <A HREF="UniqFM.html#t%3AUniqFM"
>UniqFM</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:isEmptyVarEnv"
><A NAME="v%3AisEmptyVarEnv"
></A
></A
><B
>isEmptyVarEnv</B
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> 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:foldVarEnv"
><A NAME="v%3AfoldVarEnv"
></A
></A
><B
>foldVarEnv</B
> ::  (a -&gt; b -&gt; b) -&gt; b -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; b</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:elemVarEnvByKey"
><A NAME="v%3AelemVarEnvByKey"
></A
></A
><B
>elemVarEnvByKey</B
> ::  <A HREF="Unique.html#t%3AUnique"
>Unique</A
> -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> 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:lookupVarEnv_Directly"
><A NAME="v%3AlookupVarEnv_Directly"
></A
></A
><B
>lookupVarEnv_Directly</B
> ::  <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="Unique.html#t%3AUnique"
>Unique</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:filterVarEnv_Directly"
><A NAME="v%3AfilterVarEnv_Directly"
></A
></A
><B
>filterVarEnv_Directly</B
> ::  (<A HREF="Unique.html#t%3AUnique"
>Unique</A
> -&gt; a -&gt; <A HREF="../ghc-prim/GHC-Bool.html#t%3ABool"
>Bool</A
>) -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> a</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="3"
><A NAME="3"
>The InScopeSet type
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:InScopeSet"
><A NAME="t%3AInScopeSet"
></A
></A
><B
>InScopeSet</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>A set of variables that are in scope at some point
</TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:InScopeSet')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:InScopeSet" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="Outputable.html#t%3AOutputable"
>Outputable</A
> <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="4"
><A NAME="4"
>Operations on InScopeSets
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:emptyInScopeSet"
><A NAME="v%3AemptyInScopeSet"
></A
></A
><B
>emptyInScopeSet</B
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkInScopeSet"
><A NAME="v%3AmkInScopeSet"
></A
></A
><B
>mkInScopeSet</B
> :: <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> <A HREF="Var.html#t%3AVar"
>Var</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:delInScopeSet"
><A NAME="v%3AdelInScopeSet"
></A
></A
><B
>delInScopeSet</B
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</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:extendInScopeSet"
><A NAME="v%3AextendInScopeSet"
></A
></A
><B
>extendInScopeSet</B
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</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:extendInScopeSetList"
><A NAME="v%3AextendInScopeSetList"
></A
></A
><B
>extendInScopeSetList</B
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; [<A HREF="Var.html#t%3AVar"
>Var</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:extendInScopeSetSet"
><A NAME="v%3AextendInScopeSetSet"
></A
></A
><B
>extendInScopeSetSet</B
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> <A HREF="Var.html#t%3AVar"
>Var</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:modifyInScopeSet"
><A NAME="v%3AmodifyInScopeSet"
></A
></A
><B
>modifyInScopeSet</B
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
></TD
></TR
><TR
><TD CLASS="doc"
>Replace the first <TT
><A HREF="Var.html#t%3AVar"
>Var</A
></TT
> with the second in the set of in-scope variables
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:getInScopeVars"
><A NAME="v%3AgetInScopeVars"
></A
></A
><B
>getInScopeVars</B
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> <A HREF="Var.html#t%3AVar"
>Var</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:lookupInScope"
><A NAME="v%3AlookupInScope"
></A
></A
><B
>lookupInScope</B
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="../base/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="Var.html#t%3AVar"
>Var</A
></TD
></TR
><TR
><TD CLASS="doc"
>If the given variable was even added to the <TT
><A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
></TT
>, or if it was the &quot;from&quot; argument
 of any <TT
><A HREF="VarEnv.html#v%3AmodifyInScopeSet"
>modifyInScopeSet</A
></TT
> operation, returns that variable with all appropriate modifications
 applied to it. Otherwise, return <TT
>Nothing</TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:elemInScopeSet"
><A NAME="v%3AelemInScopeSet"
></A
></A
><B
>elemInScopeSet</B
> :: <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</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:uniqAway"
><A NAME="v%3AuniqAway"
></A
></A
><B
>uniqAway</B
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
></TD
></TR
><TR
><TD CLASS="doc"
><TT
>uniqAway in_scope v</TT
> finds a unique that is not used in the
 in-scope set, and gives that to v. 
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="5"
><A NAME="5"
>The RnEnv2 type
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:RnEnv2"
><A NAME="t%3ARnEnv2"
></A
></A
><B
>RnEnv2</B
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
><P
>When we are comparing (or matching) types or terms, we are faced with 
 &quot;going under&quot; corresponding binders.  E.g. when comparing:
</P
><PRE
> \x. e1	~   \y. e2
</PRE
><P
>Basically we want to rename [<TT
>x</TT
> -&gt; <TT
>y</TT
>] or [<TT
>y</TT
> -&gt; <TT
>x</TT
>], but there are lots of 
 things we must be careful of.  In particular, <TT
>x</TT
> might be free in <TT
>e2</TT
>, or
 y in <TT
>e1</TT
>.  So the idea is that we come up with a fresh binder that is free
 in neither, and rename <TT
>x</TT
> and <TT
>y</TT
> respectively.  That means we must maintain:
</P
><P
>1. A renaming for the left-hand expression
</P
><P
>2. A renaming for the right-hand expressions
</P
><P
>3. An in-scope set
</P
><P
>Furthermore, when matching, we want to be able to have an 'occurs check',
 to prevent:
</P
><PRE
> \x. f   ~   \y. y
</PRE
><P
>matching with [<TT
>f</TT
> -&gt; <TT
>y</TT
>].  So for each expression we want to know that set of
 locally-bound variables. That is precisely the domain of the mappings 1.
 and 2., but we must ensure that we always extend the mappings as we go in.
</P
><P
>All of this information is bundled up in the <TT
><A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
></TT
>
</P
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section2"
><A NAME="6"
><A NAME="6"
>Operations on RnEnv2s
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:mkRnEnv2"
><A NAME="v%3AmkRnEnv2"
></A
></A
><B
>mkRnEnv2</B
> :: <A HREF="VarEnv.html#t%3AInScopeSet"
>InScopeSet</A
> -&gt; <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:rnBndr2"
><A NAME="v%3ArnBndr2"
></A
></A
><B
>rnBndr2</B
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
></TD
></TR
><TR
><TD CLASS="doc"
><TT
>rnBndr2 env bL bR</TT
> goes under a binder <TT
>bL</TT
> in the Left term,
 		         and binder <TT
>bR</TT
> in the Right term.
 It finds a new binder, <TT
>new_b</TT
>,
 and returns an environment mapping <TT
>bL -&gt; new_b</TT
> and <TT
>bR -&gt; new_b</TT
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:rnBndrs2"
><A NAME="v%3ArnBndrs2"
></A
></A
><B
>rnBndrs2</B
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; [<A HREF="Var.html#t%3AVar"
>Var</A
>] -&gt; [<A HREF="Var.html#t%3AVar"
>Var</A
>] -&gt; <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
></TD
></TR
><TR
><TD CLASS="doc"
>Applies <TT
><A HREF="VarEnv.html#v%3ArnBndr2"
>rnBndr2</A
></TT
> to several variables: the two variable lists must be of equal length
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:rnOccL"
><A NAME="v%3ArnOccL"
></A
></A
><B
>rnOccL</B
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
></TD
></TR
><TR
><TD CLASS="doc"
>Look up the renaming of an occurrence in the left or right term
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:rnOccR"
><A NAME="v%3ArnOccR"
></A
></A
><B
>rnOccR</B
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:inRnEnvL"
><A NAME="v%3AinRnEnvL"
></A
></A
><B
>inRnEnvL</B
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <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="doc"
>Tells whether a variable is locally bound
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:inRnEnvR"
><A NAME="v%3AinRnEnvR"
></A
></A
><B
>inRnEnvR</B
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <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:rnBndrL"
><A NAME="v%3ArnBndrL"
></A
></A
><B
>rnBndrL</B
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; (<A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
>, <A HREF="Var.html#t%3AVar"
>Var</A
>)</TD
></TR
><TR
><TD CLASS="doc"
>Similar to <TT
><A HREF="VarEnv.html#v%3ArnBndr2"
>rnBndr2</A
></TT
> but used when there's a binder on the left
 side only. Useful when eta-expanding
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:rnBndrR"
><A NAME="v%3ArnBndrR"
></A
></A
><B
>rnBndrR</B
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; (<A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
>, <A HREF="Var.html#t%3AVar"
>Var</A
>)</TD
></TR
><TR
><TD CLASS="doc"
>Similar to <TT
><A HREF="VarEnv.html#v%3ArnBndr2"
>rnBndr2</A
></TT
> but used when there's a binder on the right
 side only. Useful when eta-expanding
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:nukeRnEnvL"
><A NAME="v%3AnukeRnEnvL"
></A
></A
><B
>nukeRnEnvL</B
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
></TD
></TR
><TR
><TD CLASS="doc"
>Wipe the left or right side renaming
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:nukeRnEnvR"
><A NAME="v%3AnukeRnEnvR"
></A
></A
><B
>nukeRnEnvR</B
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:extendRnInScopeList"
><A NAME="v%3AextendRnInScopeList"
></A
></A
><B
>extendRnInScopeList</B
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; [<A HREF="Var.html#t%3AVar"
>Var</A
>] -&gt; <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:rnInScope"
><A NAME="v%3ArnInScope"
></A
></A
><B
>rnInScope</B
> :: <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</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:rnInScopeSet"
><A NAME="v%3ArnInScopeSet"
></A
></A
><B
>rnInScopeSet</B
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</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:lookupRnInScope"
><A NAME="v%3AlookupRnInScope"
></A
></A
><B
>lookupRnInScope</B
> :: <A HREF="VarEnv.html#t%3ARnEnv2"
>RnEnv2</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="Var.html#t%3AVar"
>Var</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="7"
><A NAME="7"
>TidyEnv and its operation
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:TidyEnv"
><A NAME="t%3ATidyEnv"
></A
></A
><B
>TidyEnv</B
> = (<A HREF="OccName.html#t%3ATidyOccEnv"
>TidyOccEnv</A
>, <A HREF="VarEnv.html#t%3AVarEnv"
>VarEnv</A
> <A HREF="Var.html#t%3AVar"
>Var</A
>)</TD
></TR
><TR
><TD CLASS="doc"
>When tidying up print names, we keep a mapping of in-scope occ-names
 (the <TT
><A HREF="OccName.html#t%3ATidyOccEnv"
>TidyOccEnv</A
></TT
>) and a Var-to-Var of the current renamings
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:emptyTidyEnv"
><A NAME="v%3AemptyTidyEnv"
></A
></A
><B
>emptyTidyEnv</B
> :: <A HREF="VarEnv.html#t%3ATidyEnv"
>TidyEnv</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
>