Sophie

Sophie

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

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>CoreFVs</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_CoreFVs.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">CoreFVs</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Free variables of expressions and binding groups
</a></li><li><a href="#g:2">Selective free variables of expressions
</a></li><li><a href="#g:3">Free variables of Rules, Vars and Ids
</a></li><li><a href="#g:4">Core syntax tree annotation with free variables
</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>A module concerned with finding the free variables of an expression.
</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"><a href="#v:exprFreeVars">exprFreeVars</a> :: <a href="CoreSyn.html#t:CoreExpr">CoreExpr</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:exprFreeIds">exprFreeIds</a> :: <a href="CoreSyn.html#t:CoreExpr">CoreExpr</a> -&gt; <a href="VarSet.html#t:IdSet">IdSet</a></li><li class="src short"><a href="#v:exprsFreeVars">exprsFreeVars</a> :: [<a href="CoreSyn.html#t:CoreExpr">CoreExpr</a>] -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:bindFreeVars">bindFreeVars</a> :: <a href="CoreSyn.html#t:CoreBind">CoreBind</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:InterestingVarFun">InterestingVarFun</a> = <a href="Var.html#t:Var">Var</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:exprSomeFreeVars">exprSomeFreeVars</a> :: <a href="CoreFVs.html#t:InterestingVarFun">InterestingVarFun</a> -&gt; <a href="CoreSyn.html#t:CoreExpr">CoreExpr</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:exprsSomeFreeVars">exprsSomeFreeVars</a> :: <a href="CoreFVs.html#t:InterestingVarFun">InterestingVarFun</a> -&gt; [<a href="CoreSyn.html#t:CoreExpr">CoreExpr</a>] -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:varTypeTyVars">varTypeTyVars</a> :: <a href="Var.html#t:Var">Var</a> -&gt; <a href="VarSet.html#t:TyVarSet">TyVarSet</a></li><li class="src short"><a href="#v:varTypeTcTyVars">varTypeTcTyVars</a> :: <a href="Var.html#t:Var">Var</a> -&gt; <a href="VarSet.html#t:TyVarSet">TyVarSet</a></li><li class="src short"><a href="#v:idUnfoldingVars">idUnfoldingVars</a> :: <a href="Var.html#t:Id">Id</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:idFreeVars">idFreeVars</a> :: <a href="Var.html#t:Id">Id</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:idRuleAndUnfoldingVars">idRuleAndUnfoldingVars</a> :: <a href="Var.html#t:Id">Id</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:idRuleVars">idRuleVars</a> :: <a href="Var.html#t:Id">Id</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:idRuleRhsVars">idRuleRhsVars</a> :: (<a href="BasicTypes.html#t:Activation">Activation</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; <a href="Var.html#t:Id">Id</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:stableUnfoldingVars">stableUnfoldingVars</a> :: <a href="CoreFVs.html#t:InterestingVarFun">InterestingVarFun</a> -&gt; <a href="CoreSyn.html#t:Unfolding">Unfolding</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:ruleRhsFreeVars">ruleRhsFreeVars</a> :: <a href="CoreSyn.html#t:CoreRule">CoreRule</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:rulesFreeVars">rulesFreeVars</a> :: [<a href="CoreSyn.html#t:CoreRule">CoreRule</a>] -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:ruleLhsOrphNames">ruleLhsOrphNames</a> :: <a href="CoreSyn.html#t:CoreRule">CoreRule</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></li><li class="src short"><a href="#v:ruleLhsFreeIds">ruleLhsFreeIds</a> :: <a href="CoreSyn.html#t:CoreRule">CoreRule</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:vectsFreeVars">vectsFreeVars</a> :: [<a href="CoreSyn.html#t:CoreVect">CoreVect</a>] -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CoreExprWithFVs">CoreExprWithFVs</a> = <a href="CoreSyn.html#t:AnnExpr">AnnExpr</a> <a href="Var.html#t:Id">Id</a> <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CoreBindWithFVs">CoreBindWithFVs</a> = <a href="CoreSyn.html#t:AnnBind">AnnBind</a> <a href="Var.html#t:Id">Id</a> <a href="VarSet.html#t:VarSet">VarSet</a></li><li class="src short"><a href="#v:freeVars">freeVars</a> :: <a href="CoreSyn.html#t:CoreExpr">CoreExpr</a> -&gt; <a href="CoreFVs.html#t:CoreExprWithFVs">CoreExprWithFVs</a></li><li class="src short"><a href="#v:freeVarsOf">freeVarsOf</a> :: <a href="CoreFVs.html#t:CoreExprWithFVs">CoreExprWithFVs</a> -&gt; <a href="VarSet.html#t:IdSet">IdSet</a></li></ul></div><div id="interface"><h1 id="g:1">Free variables of expressions and binding groups
</h1><div class="top"><p class="src"><a name="v:exprFreeVars" class="def">exprFreeVars</a> :: <a href="CoreSyn.html#t:CoreExpr">CoreExpr</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></p><div class="doc"><p>Find all locally-defined free Ids or type variables in an expression
</p></div></div><div class="top"><p class="src"><a name="v:exprFreeIds" class="def">exprFreeIds</a> :: <a href="CoreSyn.html#t:CoreExpr">CoreExpr</a> -&gt; <a href="VarSet.html#t:IdSet">IdSet</a></p><div class="doc"><p>Find all locally-defined free Ids in an expression
</p></div></div><div class="top"><p class="src"><a name="v:exprsFreeVars" class="def">exprsFreeVars</a> :: [<a href="CoreSyn.html#t:CoreExpr">CoreExpr</a>] -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></p><div class="doc"><p>Find all locally-defined free Ids or type variables in several expressions
</p></div></div><div class="top"><p class="src"><a name="v:bindFreeVars" class="def">bindFreeVars</a> :: <a href="CoreSyn.html#t:CoreBind">CoreBind</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></p><div class="doc"><p>Find all locally defined free Ids in a binding group
</p></div></div><h1 id="g:2">Selective free variables of expressions
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:InterestingVarFun" class="def">InterestingVarFun</a> = <a href="Var.html#t:Var">Var</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>Predicate on possible free variables: returns <code>True</code> iff the variable is interesting
</p></div></div><div class="top"><p class="src"><a name="v:exprSomeFreeVars" class="def">exprSomeFreeVars</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="CoreFVs.html#t:InterestingVarFun">InterestingVarFun</a></td><td class="doc"><p>Says which <code><a href="Var.html#t:Var">Var</a></code>s are interesting
</p></td></tr><tr><td class="src">-&gt; <a href="CoreSyn.html#t:CoreExpr">CoreExpr</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; <a href="VarSet.html#t:VarSet">VarSet</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Finds free variables in an expression selected by a predicate
</p></div></div><div class="top"><p class="src"><a name="v:exprsSomeFreeVars" class="def">exprsSomeFreeVars</a> :: <a href="CoreFVs.html#t:InterestingVarFun">InterestingVarFun</a> -&gt; [<a href="CoreSyn.html#t:CoreExpr">CoreExpr</a>] -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></p><div class="doc"><p>Finds free variables in several expressions selected by a predicate
</p></div></div><h1 id="g:3">Free variables of Rules, Vars and Ids
</h1><div class="top"><p class="src"><a name="v:varTypeTyVars" class="def">varTypeTyVars</a> :: <a href="Var.html#t:Var">Var</a> -&gt; <a href="VarSet.html#t:TyVarSet">TyVarSet</a></p></div><div class="top"><p class="src"><a name="v:varTypeTcTyVars" class="def">varTypeTcTyVars</a> :: <a href="Var.html#t:Var">Var</a> -&gt; <a href="VarSet.html#t:TyVarSet">TyVarSet</a></p></div><div class="top"><p class="src"><a name="v:idUnfoldingVars" class="def">idUnfoldingVars</a> :: <a href="Var.html#t:Id">Id</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></p></div><div class="top"><p class="src"><a name="v:idFreeVars" class="def">idFreeVars</a> :: <a href="Var.html#t:Id">Id</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></p></div><div class="top"><p class="src"><a name="v:idRuleAndUnfoldingVars" class="def">idRuleAndUnfoldingVars</a> :: <a href="Var.html#t:Id">Id</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></p></div><div class="top"><p class="src"><a name="v:idRuleVars" class="def">idRuleVars</a> :: <a href="Var.html#t:Id">Id</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></p></div><div class="top"><p class="src"><a name="v:idRuleRhsVars" class="def">idRuleRhsVars</a> :: (<a href="BasicTypes.html#t:Activation">Activation</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; <a href="Var.html#t:Id">Id</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></p></div><div class="top"><p class="src"><a name="v:stableUnfoldingVars" class="def">stableUnfoldingVars</a> :: <a href="CoreFVs.html#t:InterestingVarFun">InterestingVarFun</a> -&gt; <a href="CoreSyn.html#t:Unfolding">Unfolding</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="VarSet.html#t:VarSet">VarSet</a></p></div><div class="top"><p class="src"><a name="v:ruleRhsFreeVars" class="def">ruleRhsFreeVars</a> :: <a href="CoreSyn.html#t:CoreRule">CoreRule</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></p><div class="doc"><p>Those variables free in the right hand side of a rule
</p></div></div><div class="top"><p class="src"><a name="v:rulesFreeVars" class="def">rulesFreeVars</a> :: [<a href="CoreSyn.html#t:CoreRule">CoreRule</a>] -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></p><div class="doc"><p>Those variables free in the right hand side of several rules
</p></div></div><div class="top"><p class="src"><a name="v:ruleLhsOrphNames" class="def">ruleLhsOrphNames</a> :: <a href="CoreSyn.html#t:CoreRule">CoreRule</a> -&gt; <a href="NameSet.html#t:NameSet">NameSet</a></p><div class="doc"><p>ruleLhsOrphNames is used when deciding whether
 a rule is an orphan.  In particular, suppose that T is defined in this
 module; we want to avoid declaring that a rule like:
</p><pre> fromIntegral T = fromIntegral_T
</pre><p>is an orphan. Of course it isn't, and declaring it an orphan would
 make the whole module an orphan module, which is bad.
</p></div></div><div class="top"><p class="src"><a name="v:ruleLhsFreeIds" class="def">ruleLhsFreeIds</a> :: <a href="CoreSyn.html#t:CoreRule">CoreRule</a> -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></p><div class="doc"><p>This finds all locally-defined free Ids on the left hand side of a rule
</p></div></div><div class="top"><p class="src"><a name="v:vectsFreeVars" class="def">vectsFreeVars</a> :: [<a href="CoreSyn.html#t:CoreVect">CoreVect</a>] -&gt; <a href="VarSet.html#t:VarSet">VarSet</a></p><div class="doc"><p>Free variables of a vectorisation declaration
</p></div></div><h1 id="g:4">Core syntax tree annotation with free variables
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CoreExprWithFVs" class="def">CoreExprWithFVs</a> = <a href="CoreSyn.html#t:AnnExpr">AnnExpr</a> <a href="Var.html#t:Id">Id</a> <a href="VarSet.html#t:VarSet">VarSet</a></p><div class="doc"><p>Every node in an expression annotated with its
 (non-global) free variables, both Ids and TyVars
</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CoreBindWithFVs" class="def">CoreBindWithFVs</a> = <a href="CoreSyn.html#t:AnnBind">AnnBind</a> <a href="Var.html#t:Id">Id</a> <a href="VarSet.html#t:VarSet">VarSet</a></p><div class="doc"><p>Every node in a binding group annotated with its
 (non-global) free variables, both Ids and TyVars
</p></div></div><div class="top"><p class="src"><a name="v:freeVars" class="def">freeVars</a> :: <a href="CoreSyn.html#t:CoreExpr">CoreExpr</a> -&gt; <a href="CoreFVs.html#t:CoreExprWithFVs">CoreExprWithFVs</a></p><div class="doc"><p>Annotate a <code><a href="CoreSyn.html#t:CoreExpr">CoreExpr</a></code> with its (non-global) free type and value variables at every tree node
</p></div></div><div class="top"><p class="src"><a name="v:freeVarsOf" class="def">freeVarsOf</a> :: <a href="CoreFVs.html#t:CoreExprWithFVs">CoreExprWithFVs</a> -&gt; <a href="VarSet.html#t:IdSet">IdSet</a></p><div class="doc"><p>Inverse function to <code><a href="CoreFVs.html#v:freeVars">freeVars</a></code>
</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>