Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release > by-pkgid > 6e204a966e8c42d976f99a1700ce5f20 > files > 2956

ghc-7.4.2-4.mga5.i586.rpm

<!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>NameSet</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_NameSet.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">NameSet</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Names set type
</a><ul><li><a href="#g:2">Manipulating these sets
</a></li></ul></li><li><a href="#g:3">Free variables
</a><ul><li><a href="#g:4">Manipulating sets of free variables
</a></li></ul></li><li><a href="#g:5">Defs and uses
</a><ul><li><a href="#g:6">Manipulating defs and uses
</a></li></ul></li></ul></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">type</span> <a href="#t:NameSet">NameSet</a> = <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="Name.html#t:Name">Name</a></li><li class="src short"><a href="#v:emptyNameSet">emptyNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><a href="#v:unitNameSet">unitNameSet</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><a href="#v:mkNameSet">mkNameSet</a> :: [<a href="Name.html#t:Name">Name</a>] -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><a href="#v:unionNameSets">unionNameSets</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><a href="#v:unionManyNameSets">unionManyNameSets</a> :: [<a href="NameSet.html#t:NameSet">NameSet</a>] -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><a href="#v:minusNameSet">minusNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><a href="#v:elemNameSet">elemNameSet</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:nameSetToList">nameSetToList</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; [<a href="Name.html#t:Name">Name</a>]</li><li class="src short"><a href="#v:addOneToNameSet">addOneToNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="Name.html#t:Name">Name</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><a href="#v:addListToNameSet">addListToNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; [<a href="Name.html#t:Name">Name</a>] -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><a href="#v:delFromNameSet">delFromNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="Name.html#t:Name">Name</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><a href="#v:delListFromNameSet">delListFromNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; [<a href="Name.html#t:Name">Name</a>] -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><a href="#v:isEmptyNameSet">isEmptyNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:foldNameSet">foldNameSet</a> ::  (<a href="Name.html#t:Name">Name</a> -&gt; b -&gt; b) -&gt; b -&gt; <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; b</li><li class="src short"><a href="#v:filterNameSet">filterNameSet</a> :: (<a href="Name.html#t:Name">Name</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><a href="#v:intersectsNameSet">intersectsNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:intersectNameSet">intersectNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:FreeVars">FreeVars</a> = <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><a href="#v:isEmptyFVs">isEmptyFVs</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:emptyFVs">emptyFVs</a> :: <a href="NameSet.html#t:FreeVars">FreeVars</a></li><li class="src short"><a href="#v:plusFVs">plusFVs</a> :: [<a href="NameSet.html#t:FreeVars">FreeVars</a>] -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a></li><li class="src short"><a href="#v:plusFV">plusFV</a> :: <a href="NameSet.html#t:FreeVars">FreeVars</a> -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a> -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a></li><li class="src short"><a href="#v:mkFVs">mkFVs</a> :: [<a href="Name.html#t:Name">Name</a>] -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a></li><li class="src short"><a href="#v:addOneFV">addOneFV</a> :: <a href="NameSet.html#t:FreeVars">FreeVars</a> -&gt; <a href="Name.html#t:Name">Name</a> -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a></li><li class="src short"><a href="#v:unitFV">unitFV</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a></li><li class="src short"><a href="#v:delFV">delFV</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a> -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a></li><li class="src short"><a href="#v:delFVs">delFVs</a> :: [<a href="Name.html#t:Name">Name</a>] -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a> -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:Defs">Defs</a> = <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:Uses">Uses</a> = <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:DefUse">DefUse</a> = (<a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="NameSet.html#t:Defs">Defs</a>, <a href="NameSet.html#t:Uses">Uses</a>)</li><li class="src short"><span class="keyword">type</span> <a href="#t:DefUses">DefUses</a> = [<a href="NameSet.html#t:DefUse">DefUse</a>]</li><li class="src short"><a href="#v:emptyDUs">emptyDUs</a> :: <a href="NameSet.html#t:DefUses">DefUses</a></li><li class="src short"><a href="#v:usesOnly">usesOnly</a> :: <a href="NameSet.html#t:Uses">Uses</a> -&gt; <a href="NameSet.html#t:DefUses">DefUses</a></li><li class="src short"><a href="#v:mkDUs">mkDUs</a> :: [(<a href="NameSet.html#t:Defs">Defs</a>, <a href="NameSet.html#t:Uses">Uses</a>)] -&gt; <a href="NameSet.html#t:DefUses">DefUses</a></li><li class="src short"><a href="#v:plusDU">plusDU</a> :: <a href="NameSet.html#t:DefUses">DefUses</a> -&gt; <a href="NameSet.html#t:DefUses">DefUses</a> -&gt; <a href="NameSet.html#t:DefUses">DefUses</a></li><li class="src short"><a href="#v:findUses">findUses</a> :: <a href="NameSet.html#t:DefUses">DefUses</a> -&gt; <a href="NameSet.html#t:Uses">Uses</a> -&gt; <a href="NameSet.html#t:Uses">Uses</a></li><li class="src short"><a href="#v:duDefs">duDefs</a> :: <a href="NameSet.html#t:DefUses">DefUses</a> -&gt; <a href="NameSet.html#t:Defs">Defs</a></li><li class="src short"><a href="#v:duUses">duUses</a> :: <a href="NameSet.html#t:DefUses">DefUses</a> -&gt; <a href="NameSet.html#t:Uses">Uses</a></li><li class="src short"><a href="#v:allUses">allUses</a> :: <a href="NameSet.html#t:DefUses">DefUses</a> -&gt; <a href="NameSet.html#t:Uses">Uses</a></li></ul></div><div id="interface"><h1 id="g:1">Names set type
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:NameSet" class="def">NameSet</a> = <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="Name.html#t:Name">Name</a></p></div><h2 id="g:2">Manipulating these sets
</h2><div class="top"><p class="src"><a name="v:emptyNameSet" class="def">emptyNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a></p></div><div class="top"><p class="src"><a name="v:unitNameSet" class="def">unitNameSet</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></p></div><div class="top"><p class="src"><a name="v:mkNameSet" class="def">mkNameSet</a> :: [<a href="Name.html#t:Name">Name</a>] -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></p></div><div class="top"><p class="src"><a name="v:unionNameSets" class="def">unionNameSets</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></p></div><div class="top"><p class="src"><a name="v:unionManyNameSets" class="def">unionManyNameSets</a> :: [<a href="NameSet.html#t:NameSet">NameSet</a>] -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></p></div><div class="top"><p class="src"><a name="v:minusNameSet" class="def">minusNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></p></div><div class="top"><p class="src"><a name="v:elemNameSet" class="def">elemNameSet</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <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:nameSetToList" class="def">nameSetToList</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; [<a href="Name.html#t:Name">Name</a>]</p></div><div class="top"><p class="src"><a name="v:addOneToNameSet" class="def">addOneToNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="Name.html#t:Name">Name</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></p></div><div class="top"><p class="src"><a name="v:addListToNameSet" class="def">addListToNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; [<a href="Name.html#t:Name">Name</a>] -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></p></div><div class="top"><p class="src"><a name="v:delFromNameSet" class="def">delFromNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="Name.html#t:Name">Name</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></p></div><div class="top"><p class="src"><a name="v:delListFromNameSet" class="def">delListFromNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; [<a href="Name.html#t:Name">Name</a>] -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></p></div><div class="top"><p class="src"><a name="v:isEmptyNameSet" class="def">isEmptyNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <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:foldNameSet" class="def">foldNameSet</a> ::  (<a href="Name.html#t:Name">Name</a> -&gt; b -&gt; b) -&gt; b -&gt; <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; b</p></div><div class="top"><p class="src"><a name="v:filterNameSet" class="def">filterNameSet</a> :: (<a href="Name.html#t:Name">Name</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></p></div><div class="top"><p class="src"><a name="v:intersectsNameSet" class="def">intersectsNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>True if there is a non-empty intersection.
 <code>s1 <code><a href="NameSet.html#v:intersectsNameSet">intersectsNameSet</a></code> s2</code> doesn't compute <code>s2</code> if <code>s1</code> is empty
</p></div></div><div class="top"><p class="src"><a name="v:intersectNameSet" class="def">intersectNameSet</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></p></div><h1 id="g:3">Free variables
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:FreeVars" class="def">FreeVars</a> = <a href="NameSet.html#t:NameSet">NameSet</a></p></div><h2 id="g:4">Manipulating sets of free variables
</h2><div class="top"><p class="src"><a name="v:isEmptyFVs" class="def">isEmptyFVs</a> :: <a href="NameSet.html#t:NameSet">NameSet</a> -&gt; <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:emptyFVs" class="def">emptyFVs</a> :: <a href="NameSet.html#t:FreeVars">FreeVars</a></p></div><div class="top"><p class="src"><a name="v:plusFVs" class="def">plusFVs</a> :: [<a href="NameSet.html#t:FreeVars">FreeVars</a>] -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a></p></div><div class="top"><p class="src"><a name="v:plusFV" class="def">plusFV</a> :: <a href="NameSet.html#t:FreeVars">FreeVars</a> -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a> -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a></p></div><div class="top"><p class="src"><a name="v:mkFVs" class="def">mkFVs</a> :: [<a href="Name.html#t:Name">Name</a>] -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a></p></div><div class="top"><p class="src"><a name="v:addOneFV" class="def">addOneFV</a> :: <a href="NameSet.html#t:FreeVars">FreeVars</a> -&gt; <a href="Name.html#t:Name">Name</a> -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a></p></div><div class="top"><p class="src"><a name="v:unitFV" class="def">unitFV</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a></p></div><div class="top"><p class="src"><a name="v:delFV" class="def">delFV</a> :: <a href="Name.html#t:Name">Name</a> -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a> -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a></p></div><div class="top"><p class="src"><a name="v:delFVs" class="def">delFVs</a> :: [<a href="Name.html#t:Name">Name</a>] -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a> -&gt; <a href="NameSet.html#t:FreeVars">FreeVars</a></p></div><h1 id="g:5">Defs and uses
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Defs" class="def">Defs</a> = <a href="NameSet.html#t:NameSet">NameSet</a></p><div class="doc"><p>A set of names that are defined somewhere
</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Uses" class="def">Uses</a> = <a href="NameSet.html#t:NameSet">NameSet</a></p><div class="doc"><p>A set of names that are used somewhere
</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:DefUse" class="def">DefUse</a> = (<a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="NameSet.html#t:Defs">Defs</a>, <a href="NameSet.html#t:Uses">Uses</a>)</p><div class="doc"><p><code>(Just ds, us) =&gt;</code> The use of any member of the <code>ds</code>
                      implies that all the <code>us</code> are used too.
                      Also, <code>us</code> may mention <code>ds</code>.
</p><p><code>Nothing =&gt;</code> Nothing is defined in this group, but
 	        nevertheless all the uses are essential.
	        Used for instance declarations, for example
</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:DefUses" class="def">DefUses</a> = [<a href="NameSet.html#t:DefUse">DefUse</a>]</p><div class="doc"><p>A number of <code><a href="NameSet.html#t:DefUse">DefUse</a></code>s in dependency order: earlier <code><a href="NameSet.html#t:Defs">Defs</a></code> scope over later <code><a href="NameSet.html#t:Uses">Uses</a></code>
   In a single (def, use) pair, the defs also scope over the uses
</p></div></div><h2 id="g:6">Manipulating defs and uses
</h2><div class="top"><p class="src"><a name="v:emptyDUs" class="def">emptyDUs</a> :: <a href="NameSet.html#t:DefUses">DefUses</a></p></div><div class="top"><p class="src"><a name="v:usesOnly" class="def">usesOnly</a> :: <a href="NameSet.html#t:Uses">Uses</a> -&gt; <a href="NameSet.html#t:DefUses">DefUses</a></p></div><div class="top"><p class="src"><a name="v:mkDUs" class="def">mkDUs</a> :: [(<a href="NameSet.html#t:Defs">Defs</a>, <a href="NameSet.html#t:Uses">Uses</a>)] -&gt; <a href="NameSet.html#t:DefUses">DefUses</a></p></div><div class="top"><p class="src"><a name="v:plusDU" class="def">plusDU</a> :: <a href="NameSet.html#t:DefUses">DefUses</a> -&gt; <a href="NameSet.html#t:DefUses">DefUses</a> -&gt; <a href="NameSet.html#t:DefUses">DefUses</a></p></div><div class="top"><p class="src"><a name="v:findUses" class="def">findUses</a> :: <a href="NameSet.html#t:DefUses">DefUses</a> -&gt; <a href="NameSet.html#t:Uses">Uses</a> -&gt; <a href="NameSet.html#t:Uses">Uses</a></p><div class="doc"><p>Given some <code><a href="NameSet.html#t:DefUses">DefUses</a></code> and some <code><a href="NameSet.html#t:Uses">Uses</a></code>, find all the uses, transitively.
 The result is a superset of the input <code><a href="NameSet.html#t:Uses">Uses</a></code>; and includes things defined 
 in the input <code><a href="NameSet.html#t:DefUses">DefUses</a></code> (but only if they are used)
</p></div></div><div class="top"><p class="src"><a name="v:duDefs" class="def">duDefs</a> :: <a href="NameSet.html#t:DefUses">DefUses</a> -&gt; <a href="NameSet.html#t:Defs">Defs</a></p></div><div class="top"><p class="src"><a name="v:duUses" class="def">duUses</a> :: <a href="NameSet.html#t:DefUses">DefUses</a> -&gt; <a href="NameSet.html#t:Uses">Uses</a></p><div class="doc"><p>Collect all <code><a href="NameSet.html#t:Uses">Uses</a></code>, regardless of whether the group is itself used,
 but remove <code><a href="NameSet.html#t:Defs">Defs</a></code> on the way
</p></div></div><div class="top"><p class="src"><a name="v:allUses" class="def">allUses</a> :: <a href="NameSet.html#t:DefUses">DefUses</a> -&gt; <a href="NameSet.html#t:Uses">Uses</a></p><div class="doc"><p>Just like <code><a href="NameSet.html#v:duUses">duUses</a></code>, but <code><a href="NameSet.html#t:Defs">Defs</a></code> are not eliminated from the <code><a href="NameSet.html#t:Uses">Uses</a></code> returned
</p></div></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>