Sophie

Sophie

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

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>Control.Monad.Fix</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_Control-Monad-Fix.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">base-4.5.1.0: Basic libraries</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>portable</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>libraries@haskell.org</td></tr><tr><th>Safe Haskell</th><td>Trustworthy</td></tr></table><p class="caption">Control.Monad.Fix</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Monadic fixpoints.
</p><p>For a detailed discussion, see Levent Erkok's thesis,
 <em>Value Recursion in Monadic Computations</em>, Oregon Graduate Institute, 2002.
</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">class</span> <a href="Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="#t:MonadFix">MonadFix</a> m  <span class="keyword">where</span><ul class="subs"><li><a href="#v:mfix">mfix</a> ::  (a -&gt; m a) -&gt; m a</li></ul></li><li class="src short"><a href="#v:fix">fix</a> ::  (a -&gt; a) -&gt; a</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">class</span> <a href="Control-Monad.html#t:Monad">Monad</a> m =&gt; <a name="t:MonadFix" class="def">MonadFix</a> m  <span class="keyword">where</span></p><div class="doc"><p>Monads having fixed points with a 'knot-tying' semantics.
 Instances of <code><a href="Control-Monad-Fix.html#t:MonadFix">MonadFix</a></code> should satisfy the following laws:
</p><dl><dt><em>purity</em></dt><dd>
      <code><code><a href="Control-Monad-Fix.html#v:mfix">mfix</a></code> (<code><a href="Control-Monad.html#v:return">return</a></code> . h)  =  <code><a href="Control-Monad.html#v:return">return</a></code> (<code><a href="Control-Monad-Fix.html#v:fix">fix</a></code> h)</code>
</dd><dt><em>left shrinking</em> (or <em>tightening</em>)</dt><dd>
      <code><code><a href="Control-Monad-Fix.html#v:mfix">mfix</a></code> (\x -&gt; a &gt;&gt;= \y -&gt; f x y)  =  a &gt;&gt;= \y -&gt; <code><a href="Control-Monad-Fix.html#v:mfix">mfix</a></code> (\x -&gt; f x y)</code>
</dd><dt><em>sliding</em></dt><dd>
      <code><code><a href="Control-Monad-Fix.html#v:mfix">mfix</a></code> (<code><a href="Control-Monad.html#v:liftM">liftM</a></code> h . f)  =  <code><a href="Control-Monad.html#v:liftM">liftM</a></code> h (<code><a href="Control-Monad-Fix.html#v:mfix">mfix</a></code> (f . h))</code>,
      for strict <code>h</code>.
</dd><dt><em>nesting</em></dt><dd>
      <code><code><a href="Control-Monad-Fix.html#v:mfix">mfix</a></code> (\x -&gt; <code><a href="Control-Monad-Fix.html#v:mfix">mfix</a></code> (\y -&gt; f x y))  =  <code><a href="Control-Monad-Fix.html#v:mfix">mfix</a></code> (\x -&gt; f x x)</code>
</dd></dl><p>This class is used in the translation of the recursive <code>do</code> notation
 supported by GHC and Hugs.
</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:mfix" class="def">mfix</a> ::  (a -&gt; m a) -&gt; m a</p><div class="doc"><p>The fixed point of a monadic computation.
 <code><code><a href="Control-Monad-Fix.html#v:mfix">mfix</a></code> f</code> executes the action <code>f</code> only once, with the eventual
 output fed back as the input.  Hence <code>f</code> should not be strict,
 for then <code><code><a href="Control-Monad-Fix.html#v:mfix">mfix</a></code> f</code> would diverge.
</p></div></div><div class="subs instances"><p id="control.i:MonadFix" class="caption collapser" onclick="toggleSection('i:MonadFix')">Instances</p><div id="section.i:MonadFix" class="show"><table><tr><td class="src"><a href="Control-Monad-Fix.html#t:MonadFix">MonadFix</a> []</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Fix.html#t:MonadFix">MonadFix</a> <a href="System-IO.html#t:IO">IO</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Fix.html#t:MonadFix">MonadFix</a> <a href="Data-Maybe.html#t:Maybe">Maybe</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Fix.html#t:MonadFix">MonadFix</a> ((-&gt;) r)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Fix.html#t:MonadFix">MonadFix</a> (<a href="Data-Either.html#t:Either">Either</a> e)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Fix.html#t:MonadFix">MonadFix</a> (<a href="Control-Monad-ST-Safe.html#t:ST">ST</a> s)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Fix.html#t:MonadFix">MonadFix</a> (<a href="Control-Monad-ST-Lazy-Safe.html#t:ST">ST</a> s)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:fix" class="def">fix</a> ::  (a -&gt; a) -&gt; a</p><div class="doc"><p><code><code><a href="Control-Monad-Fix.html#v:fix">fix</a></code> f</code> is the least fixed point of the function <code>f</code>,
 i.e. the least defined <code>x</code> such that <code>f x = x</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>