Sophie

Sophie

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

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>Data.Primitive.Array</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_Data-Primitive-Array.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Data-Primitive-Array.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">Data.Primitive.Array</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Primitive boxed arrays
</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">data</span>  <a href="#t:Array">Array</a> a = <a href="#v:Array">Array</a> (<a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:Array-35-">Array#</a> a)</li><li class="src short"><span class="keyword">data</span>  <a href="#t:MutableArray">MutableArray</a> s a = <a href="#v:MutableArray">MutableArray</a> (<a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:MutableArray-35-">MutableArray#</a> s a)</li><li class="src short"><a href="#v:newArray">newArray</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -&gt; a -&gt; m (<a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)</li><li class="src short"><a href="#v:readArray">readArray</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; <a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -&gt; m a</li><li class="src short"><a href="#v:writeArray">writeArray</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; <a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -&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><li class="src short"><a href="#v:indexArray">indexArray</a> ::  <a href="Data-Primitive-Array.html#t:Array">Array</a> a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -&gt; a</li><li class="src short"><a href="#v:indexArrayM">indexArrayM</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="Data-Primitive-Array.html#t:Array">Array</a> a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -&gt; m a</li><li class="src short"><a href="#v:unsafeFreezeArray">unsafeFreezeArray</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; <a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a -&gt; m (<a href="Data-Primitive-Array.html#t:Array">Array</a> a)</li><li class="src short"><a href="#v:unsafeThawArray">unsafeThawArray</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; <a href="Data-Primitive-Array.html#t:Array">Array</a> a -&gt; m (<a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)</li><li class="src short"><a href="#v:sameMutableArray">sameMutableArray</a> ::  <a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a> s a -&gt; <a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a> s a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Array" class="def">Array</a> a <a href="src/Data-Primitive-Array.html#Array" class="link">Source</a></p><div class="doc"><p>Boxed arrays
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Array" class="def">Array</a> (<a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:Array-35-">Array#</a> a)</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:Array" class="caption collapser" onclick="toggleSection('i:Array')">Instances</p><div id="section.i:Array" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Typeable.html#t:Typeable1">Typeable1</a> <a href="Data-Primitive-Array.html#t:Array">Array</a></td><td class="doc empty">&nbsp;</td></tr><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 =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Data.html#t:Data">Data</a> (<a href="Data-Primitive-Array.html#t:Array">Array</a> a)</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:MutableArray" class="def">MutableArray</a> s a <a href="src/Data-Primitive-Array.html#MutableArray" class="link">Source</a></p><div class="doc"><p>Mutable boxed arrays associated with a primitive state token.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:MutableArray" class="def">MutableArray</a> (<a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Prim.html#t:MutableArray-35-">MutableArray#</a> s a)</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:MutableArray" class="caption collapser" onclick="toggleSection('i:MutableArray')">Instances</p><div id="section.i:MutableArray" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Typeable.html#t:Typeable2">Typeable2</a> <a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> s, <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Typeable.html#t:Typeable">Typeable</a> a) =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Data.html#t:Data">Data</a> (<a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a> s a)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:newArray" class="def">newArray</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -&gt; a -&gt; m (<a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)<a href="src/Data-Primitive-Array.html#newArray" class="link">Source</a></p><div class="doc"><p>Create a new mutable array of the specified size and initialise all
 elements with the given value.
</p></div></div><div class="top"><p class="src"><a name="v:readArray" class="def">readArray</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; <a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -&gt; m a<a href="src/Data-Primitive-Array.html#readArray" class="link">Source</a></p><div class="doc"><p>Read a value from the array at the given index.
</p></div></div><div class="top"><p class="src"><a name="v:writeArray" class="def">writeArray</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; <a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -&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/Data-Primitive-Array.html#writeArray" class="link">Source</a></p><div class="doc"><p>Write a value to the array at the given index.
</p></div></div><div class="top"><p class="src"><a name="v:indexArray" class="def">indexArray</a> ::  <a href="Data-Primitive-Array.html#t:Array">Array</a> a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -&gt; a<a href="src/Data-Primitive-Array.html#indexArray" class="link">Source</a></p><div class="doc"><p>Read a value from the immutable array at the given index.
</p></div></div><div class="top"><p class="src"><a name="v:indexArrayM" class="def">indexArrayM</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="Data-Primitive-Array.html#t:Array">Array</a> a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -&gt; m a<a href="src/Data-Primitive-Array.html#indexArrayM" class="link">Source</a></p><div class="doc"><p>Monadically read a value from the immutable array at the given index.
 This allows us to be strict in the array while remaining lazy in the read
 element which is very useful for collective operations. Suppose we want to
 copy an array. We could do something like this:
</p><pre> copy marr arr ... = do ...
                        writeArray marr i (indexArray arr i) ...
                        ...
</pre><p>But since primitive arrays are lazy, the calls to <code><a href="Data-Primitive-Array.html#v:indexArray">indexArray</a></code> will not be
 evaluated. Rather, <code>marr</code> will be filled with thunks each of which would
 retain a reference to <code>arr</code>. This is definitely not what we want!
</p><p>With <code><a href="Data-Primitive-Array.html#v:indexArrayM">indexArrayM</a></code>, we can instead write
</p><pre> copy marr arr ... = do ...
                        x &lt;- indexArrayM arr i
                        writeArray marr i x
                        ...
</pre><p>Now, indexing is executed immediately although the returned element is
 still not evaluated.
</p></div></div><div class="top"><p class="src"><a name="v:unsafeFreezeArray" class="def">unsafeFreezeArray</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; <a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a -&gt; m (<a href="Data-Primitive-Array.html#t:Array">Array</a> a)<a href="src/Data-Primitive-Array.html#unsafeFreezeArray" class="link">Source</a></p><div class="doc"><p>Convert a mutable array to an immutable one without copying. The
 array should not be modified after the conversion.
</p></div></div><div class="top"><p class="src"><a name="v:unsafeThawArray" class="def">unsafeThawArray</a> :: <a href="Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m =&gt; <a href="Data-Primitive-Array.html#t:Array">Array</a> a -&gt; m (<a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a> (<a href="Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)<a href="src/Data-Primitive-Array.html#unsafeThawArray" class="link">Source</a></p><div class="doc"><p>Convert an immutable array to an mutable one without copying. The
 immutable array should not be used after the conversion.
</p></div></div><div class="top"><p class="src"><a name="v:sameMutableArray" class="def">sameMutableArray</a> ::  <a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a> s a -&gt; <a href="Data-Primitive-Array.html#t:MutableArray">MutableArray</a> s a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a><a href="src/Data-Primitive-Array.html#sameMutableArray" class="link">Source</a></p><div class="doc"><p>Check whether the two arrays refer to the same memory block.
</p></div></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>