Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 40e401489b664c2e3ea50bf8afe9bf02 > files > 34

ghc-primitive-devel-0.3.1-2.fc15.i686.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.Primitive</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-Primitive.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Control-Monad-Primitive.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">primitive-0.3.1: Wrappers for primitive operations</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>non-portable</td></tr><tr><th>Maintainer</th><td>Roman Leshchinskiy &lt;rl@cse.unsw.edu.au&gt;</td></tr></table><p class="caption">Control.Monad.Primitive</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Primitive state-transformer monads
</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="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="#t:PrimMonad">PrimMonad</a> m  <span class="keyword">where</span><ul class="subs"><li><span class="keyword">type</span> <a href="#t:PrimState">PrimState</a> m </li><li><a href="#v:primitive">primitive</a> ::  (<a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:State-35-">State#</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) -&gt; (#<a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:State-35-">State#</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m), a#)) -&gt; m a</li><li><a href="#v:internal">internal</a> ::  m a -&gt; <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:State-35-">State#</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) -&gt; (#<a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:State-35-">State#</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m), a#)</li></ul></li><li class="src short"><span class="keyword">data</span>  <a href="#t:RealWorld">RealWorld</a> </li><li class="src short"><a href="#v:primitive_">primitive_</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; (<a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:State-35-">State#</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) -&gt; <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:State-35-">State#</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m)) -&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a></li><li class="src short"><a href="#v:primToPrim">primToPrim</a> :: (<a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m1, <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m2, <a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m1 ~ <a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m2) =&gt; m1 a -&gt; m2 a</li><li class="src short"><a href="#v:primToIO">primToIO</a> :: (<a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m ~ <a href="Control-Monad-Primitive.html#t:RealWorld">RealWorld</a>) =&gt; m a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:primToST">primToST</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; m a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Control-Monad-ST.html#t:ST">ST</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a</li><li class="src short"><a href="#v:unsafePrimToPrim">unsafePrimToPrim</a> :: (<a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m1, <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m2) =&gt; m1 a -&gt; m2 a</li><li class="src short"><a href="#v:unsafePrimToIO">unsafePrimToIO</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; m a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:unsafePrimToST">unsafePrimToST</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; m a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Control-Monad-ST.html#t:ST">ST</a> s a</li><li class="src short"><a href="#v:unsafeInlinePrim">unsafeInlinePrim</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; m a -&gt; a</li><li class="src short"><a href="#v:unsafeInlineIO">unsafeInlineIO</a> ::  <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/System-IO.html#t:IO">IO</a> a -&gt; a</li><li class="src short"><a href="#v:unsafeInlineST">unsafeInlineST</a> ::  <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Control-Monad-ST.html#t:ST">ST</a> s a -&gt; a</li><li class="src short"><a href="#v:touch">touch</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; a -&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">class</span> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a name="t:PrimMonad" class="def">PrimMonad</a> m  <span class="keyword">where</span><a href="src/Control-Monad-Primitive.html#PrimMonad" class="link">Source</a></p><div class="doc"><p>Class of primitive state-transformer monads
</p></div><div class="subs associated-types"><p class="caption">Associated Types</p><p class="src"><span class="keyword">type</span> <a name="t:PrimState" class="def">PrimState</a> m <a href="src/Control-Monad-Primitive.html#PrimState" class="link">Source</a></p><div class="doc"><p>State token type
</p></div></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:primitive" class="def">primitive</a> ::  (<a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:State-35-">State#</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) -&gt; (#<a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:State-35-">State#</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m), a#)) -&gt; m a<a href="src/Control-Monad-Primitive.html#primitive" class="link">Source</a></p><div class="doc"><p>Execute a primitive operation
</p></div><p class="src"><a name="v:internal" class="def">internal</a> ::  m a -&gt; <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:State-35-">State#</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) -&gt; (#<a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:State-35-">State#</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m), a#)<a href="src/Control-Monad-Primitive.html#internal" class="link">Source</a></p><div class="doc"><p>Expose the internal structure of the monad
</p></div></div><div class="subs instances"><p id="control.i:PrimMonad" class="caption collapser" onclick="toggleSection('i:PrimMonad')">Instances</p><div id="section.i:PrimMonad" class="show"><table><tr><td class="src"><a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/System-IO.html#t:IO">IO</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> (<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Control-Monad-ST.html#t:ST">ST</a> s)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:RealWorld" class="def">RealWorld</a>  </p><div class="doc"><p><code>RealWorld</code> is deeply magical.  It is <em>primitive</em>, but it is not
 	<em>unlifted</em> (hence <code>ptrArg</code>).  We never manipulate values of type
 	<code>RealWorld</code>; it's only used in the type system, to parameterise <code>State#</code>. 
</p></div><div class="subs instances"><p id="control.i:RealWorld" class="caption collapser" onclick="toggleSection('i:RealWorld')">Instances</p><div id="section.i:RealWorld" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> <a href="Control-Monad-Primitive.html#t:RealWorld">RealWorld</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:primitive_" class="def">primitive_</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; (<a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:State-35-">State#</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) -&gt; <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:State-35-">State#</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m)) -&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a><a href="src/Control-Monad-Primitive.html#primitive_" class="link">Source</a></p><div class="doc"><p>Execute a primitive operation with no result
</p></div></div><div class="top"><p class="src"><a name="v:primToPrim" class="def">primToPrim</a> :: (<a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m1, <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m2, <a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m1 ~ <a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m2) =&gt; m1 a -&gt; m2 a<a href="src/Control-Monad-Primitive.html#primToPrim" class="link">Source</a></p><div class="doc"><p>Convert a <code><a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a></code> to another monad with the same state token.
</p></div></div><div class="top"><p class="src"><a name="v:primToIO" class="def">primToIO</a> :: (<a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m ~ <a href="Control-Monad-Primitive.html#t:RealWorld">RealWorld</a>) =&gt; m a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/System-IO.html#t:IO">IO</a> a<a href="src/Control-Monad-Primitive.html#primToIO" class="link">Source</a></p><div class="doc"><p>Convert a <code><a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a></code> with a <code><a href="Control-Monad-Primitive.html#t:RealWorld">RealWorld</a></code> state token to <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/System-IO.html#t:IO">IO</a></code>
</p></div></div><div class="top"><p class="src"><a name="v:primToST" class="def">primToST</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; m a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Control-Monad-ST.html#t:ST">ST</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a<a href="src/Control-Monad-Primitive.html#primToST" class="link">Source</a></p><div class="doc"><p>Convert a <code><a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a></code> to <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Control-Monad-ST.html#t:ST">ST</a></code>
</p></div></div><div class="top"><p class="src"><a name="v:unsafePrimToPrim" class="def">unsafePrimToPrim</a> :: (<a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m1, <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m2) =&gt; m1 a -&gt; m2 a<a href="src/Control-Monad-Primitive.html#unsafePrimToPrim" class="link">Source</a></p><div class="doc"><p>Convert a <code><a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a></code> to another monad with a possibly different state
 token. This operation is highly unsafe!
</p></div></div><div class="top"><p class="src"><a name="v:unsafePrimToIO" class="def">unsafePrimToIO</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; m a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/System-IO.html#t:IO">IO</a> a<a href="src/Control-Monad-Primitive.html#unsafePrimToIO" class="link">Source</a></p><div class="doc"><p>Convert any <code><a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a></code> to <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/System-IO.html#t:IO">IO</a></code>. This operation is highly unsafe!
</p></div></div><div class="top"><p class="src"><a name="v:unsafePrimToST" class="def">unsafePrimToST</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; m a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Control-Monad-ST.html#t:ST">ST</a> s a<a href="src/Control-Monad-Primitive.html#unsafePrimToST" class="link">Source</a></p><div class="doc"><p>Convert any <code><a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a></code> to <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Control-Monad-ST.html#t:ST">ST</a></code> with an arbitrary state token. This
 operations is highly unsafe!
</p></div></div><div class="top"><p class="src"><a name="v:unsafeInlinePrim" class="def">unsafeInlinePrim</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; m a -&gt; a<a href="src/Control-Monad-Primitive.html#unsafeInlinePrim" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:unsafeInlineIO" class="def">unsafeInlineIO</a> ::  <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/System-IO.html#t:IO">IO</a> a -&gt; a<a href="src/Control-Monad-Primitive.html#unsafeInlineIO" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:unsafeInlineST" class="def">unsafeInlineST</a> ::  <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Control-Monad-ST.html#t:ST">ST</a> s a -&gt; a<a href="src/Control-Monad-Primitive.html#unsafeInlineST" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:touch" class="def">touch</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; a -&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a><a href="src/Control-Monad-Primitive.html#touch" class="link">Source</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.9.2</p></div></body></html>