Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 70ec89744a04da80369b4702b2c37256 > files > 708

ghc-doc-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
>CoreFVs</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_CoreFVs.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"
>CoreFVs</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"
>Free variables of expressions and binding groups
</A
></DT
><DT
><A HREF="#2"
>Selective free variables of expressions
</A
></DT
><DT
><A HREF="#3"
>Free variables of Rules, Vars and Ids
</A
></DT
><DT
><A HREF="#4"
>Core syntax tree annotation with free variables
</A
></DT
></DL
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Description</TD
></TR
><TR
><TD CLASS="doc"
>A module concerned with finding the free variables of an expression.
</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"
><A HREF="#v%3AexprFreeVars"
>exprFreeVars</A
> :: <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AexprsFreeVars"
>exprsFreeVars</A
> :: [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AbindFreeVars"
>bindFreeVars</A
> :: <A HREF="CoreSyn.html#t%3ACoreBind"
>CoreBind</A
> -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3AInterestingVarFun"
>InterestingVarFun</A
> = <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%3AexprSomeFreeVars"
>exprSomeFreeVars</A
> :: <A HREF="CoreFVs.html#t%3AInterestingVarFun"
>InterestingVarFun</A
> -&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AexprsSomeFreeVars"
>exprsSomeFreeVars</A
> :: <A HREF="CoreFVs.html#t%3AInterestingVarFun"
>InterestingVarFun</A
> -&gt; [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AexprFreeNames"
>exprFreeNames</A
> :: <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="NameSet.html#t%3ANameSet"
>NameSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AexprsFreeNames"
>exprsFreeNames</A
> :: [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="NameSet.html#t%3ANameSet"
>NameSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AidRuleVars"
>idRuleVars</A
> :: <A HREF="Var.html#t%3AId"
>Id</A
> -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AidFreeVars"
>idFreeVars</A
> :: <A HREF="Var.html#t%3AId"
>Id</A
> -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AvarTypeTyVars"
>varTypeTyVars</A
> :: <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="VarSet.html#t%3ATyVarSet"
>TyVarSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AruleRhsFreeVars"
>ruleRhsFreeVars</A
> :: <A HREF="CoreSyn.html#t%3ACoreRule"
>CoreRule</A
> -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ArulesFreeVars"
>rulesFreeVars</A
> :: [<A HREF="CoreSyn.html#t%3ACoreRule"
>CoreRule</A
>] -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AruleLhsFreeNames"
>ruleLhsFreeNames</A
> :: <A HREF="CoreSyn.html#t%3ACoreRule"
>CoreRule</A
> -&gt; <A HREF="NameSet.html#t%3ANameSet"
>NameSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AruleLhsFreeIds"
>ruleLhsFreeIds</A
> :: <A HREF="CoreSyn.html#t%3ACoreRule"
>CoreRule</A
> -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3ACoreExprWithFVs"
>CoreExprWithFVs</A
> = <A HREF="CoreSyn.html#t%3AAnnExpr"
>AnnExpr</A
> <A HREF="Var.html#t%3AId"
>Id</A
> <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3ACoreBindWithFVs"
>CoreBindWithFVs</A
> = <A HREF="CoreSyn.html#t%3AAnnBind"
>AnnBind</A
> <A HREF="Var.html#t%3AId"
>Id</A
> <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AfreeVars"
>freeVars</A
> :: <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreFVs.html#t%3ACoreExprWithFVs"
>CoreExprWithFVs</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AfreeVarsOf"
>freeVarsOf</A
> :: <A HREF="CoreFVs.html#t%3ACoreExprWithFVs"
>CoreExprWithFVs</A
> -&gt; <A HREF="VarSet.html#t%3AIdSet"
>IdSet</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"
>Free variables of expressions and binding groups
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:exprFreeVars"
><A NAME="v%3AexprFreeVars"
></A
></A
><B
>exprFreeVars</B
> :: <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="doc"
>Find all locally-defined free Ids or type variables in an expression
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:exprsFreeVars"
><A NAME="v%3AexprsFreeVars"
></A
></A
><B
>exprsFreeVars</B
> :: [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="doc"
>Find all locally-defined free Ids or type variables in several expressions
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:bindFreeVars"
><A NAME="v%3AbindFreeVars"
></A
></A
><B
>bindFreeVars</B
> :: <A HREF="CoreSyn.html#t%3ACoreBind"
>CoreBind</A
> -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="doc"
>Find all locally defined free Ids in a binding group
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="2"
><A NAME="2"
>Selective free variables of expressions
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:InterestingVarFun"
><A NAME="t%3AInterestingVarFun"
></A
></A
><B
>InterestingVarFun</B
> = <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"
>Predicate on possible free variables: returns <TT
>True</TT
> iff the variable is interesting
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:exprSomeFreeVars"
><A NAME="v%3AexprSomeFreeVars"
></A
></A
><B
>exprSomeFreeVars</B
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="CoreFVs.html#t%3AInterestingVarFun"
>InterestingVarFun</A
></TD
><TD CLASS="rdoc"
>Says which <TT
><A HREF="Var.html#t%3AVar"
>Var</A
></TT
>s are interesting
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>Finds free variables in an expression selected by a predicate
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:exprsSomeFreeVars"
><A NAME="v%3AexprsSomeFreeVars"
></A
></A
><B
>exprsSomeFreeVars</B
> :: <A HREF="CoreFVs.html#t%3AInterestingVarFun"
>InterestingVarFun</A
> -&gt; [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="doc"
>Finds free variables in several expressions selected by a predicate
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:exprFreeNames"
><A NAME="v%3AexprFreeNames"
></A
></A
><B
>exprFreeNames</B
> :: <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="NameSet.html#t%3ANameSet"
>NameSet</A
></TD
></TR
><TR
><TD CLASS="doc"
>Finds the free <EM
>external</EM
> names of an expression, notably
 including the names of type constructors (which of course do not show
 up in <TT
><A HREF="CoreFVs.html#v%3AexprFreeVars"
>exprFreeVars</A
></TT
>).
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:exprsFreeNames"
><A NAME="v%3AexprsFreeNames"
></A
></A
><B
>exprsFreeNames</B
> :: [<A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
>] -&gt; <A HREF="NameSet.html#t%3ANameSet"
>NameSet</A
></TD
></TR
><TR
><TD CLASS="doc"
>Finds the free <EM
>external</EM
> names of several expressions: see <TT
><A HREF="CoreFVs.html#v%3AexprFreeNames"
>exprFreeNames</A
></TT
> for details
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="3"
><A NAME="3"
>Free variables of Rules, Vars and Ids
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:idRuleVars"
><A NAME="v%3AidRuleVars"
></A
></A
><B
>idRuleVars</B
> :: <A HREF="Var.html#t%3AId"
>Id</A
> -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:idFreeVars"
><A NAME="v%3AidFreeVars"
></A
></A
><B
>idFreeVars</B
> :: <A HREF="Var.html#t%3AId"
>Id</A
> -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:varTypeTyVars"
><A NAME="v%3AvarTypeTyVars"
></A
></A
><B
>varTypeTyVars</B
> :: <A HREF="Var.html#t%3AVar"
>Var</A
> -&gt; <A HREF="VarSet.html#t%3ATyVarSet"
>TyVarSet</A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:ruleRhsFreeVars"
><A NAME="v%3AruleRhsFreeVars"
></A
></A
><B
>ruleRhsFreeVars</B
> :: <A HREF="CoreSyn.html#t%3ACoreRule"
>CoreRule</A
> -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="doc"
>Those variables free in the right hand side of a rule
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:rulesFreeVars"
><A NAME="v%3ArulesFreeVars"
></A
></A
><B
>rulesFreeVars</B
> :: [<A HREF="CoreSyn.html#t%3ACoreRule"
>CoreRule</A
>] -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="doc"
>Those variables free in the right hand side of several rules
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:ruleLhsFreeNames"
><A NAME="v%3AruleLhsFreeNames"
></A
></A
><B
>ruleLhsFreeNames</B
> :: <A HREF="CoreSyn.html#t%3ACoreRule"
>CoreRule</A
> -&gt; <A HREF="NameSet.html#t%3ANameSet"
>NameSet</A
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Similar to <TT
><A HREF="CoreFVs.html#v%3AexprFreeNames"
>exprFreeNames</A
></TT
>. However, this 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
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:ruleLhsFreeIds"
><A NAME="v%3AruleLhsFreeIds"
></A
></A
><B
>ruleLhsFreeIds</B
> :: <A HREF="CoreSyn.html#t%3ACoreRule"
>CoreRule</A
> -&gt; <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="doc"
>This finds all locally-defined free Ids on the left hand side of a rule
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="4"
><A NAME="4"
>Core syntax tree annotation with free variables
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:CoreExprWithFVs"
><A NAME="t%3ACoreExprWithFVs"
></A
></A
><B
>CoreExprWithFVs</B
> = <A HREF="CoreSyn.html#t%3AAnnExpr"
>AnnExpr</A
> <A HREF="Var.html#t%3AId"
>Id</A
> <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="doc"
>Every node in an expression annotated with its 
 (non-global) free variables, both Ids and TyVars
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:CoreBindWithFVs"
><A NAME="t%3ACoreBindWithFVs"
></A
></A
><B
>CoreBindWithFVs</B
> = <A HREF="CoreSyn.html#t%3AAnnBind"
>AnnBind</A
> <A HREF="Var.html#t%3AId"
>Id</A
> <A HREF="VarSet.html#t%3AVarSet"
>VarSet</A
></TD
></TR
><TR
><TD CLASS="doc"
>Every node in a binding group annotated with its 
 (non-global) free variables, both Ids and TyVars
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:freeVars"
><A NAME="v%3AfreeVars"
></A
></A
><B
>freeVars</B
> :: <A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
> -&gt; <A HREF="CoreFVs.html#t%3ACoreExprWithFVs"
>CoreExprWithFVs</A
></TD
></TR
><TR
><TD CLASS="doc"
>Annotate a <TT
><A HREF="CoreSyn.html#t%3ACoreExpr"
>CoreExpr</A
></TT
> with its (non-global) free type and value variables at every tree node
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="decl"
><A NAME="v:freeVarsOf"
><A NAME="v%3AfreeVarsOf"
></A
></A
><B
>freeVarsOf</B
> :: <A HREF="CoreFVs.html#t%3ACoreExprWithFVs"
>CoreExprWithFVs</A
> -&gt; <A HREF="VarSet.html#t%3AIdSet"
>IdSet</A
></TD
></TR
><TR
><TD CLASS="doc"
>Inverse function to <TT
><A HREF="CoreFVs.html#v%3AfreeVars"
>freeVars</A
></TT
>
</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
>