Sophie

Sophie

distrib > Fedora > 17 > i386 > by-pkgid > e3e56c6cb2539c3a6dc856f4df58afac > files > 134

ghc-vector-devel-0.9.1-8.fc17.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.Vector.Storable.Mutable</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-Vector-Storable-Mutable.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Data-Vector-Storable-Mutable.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">vector-0.9.1: Efficient Arrays</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>non-portable</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>Roman Leshchinskiy &lt;rl@cse.unsw.edu.au&gt;</td></tr></table><p class="caption">Data.Vector.Storable.Mutable</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Mutable vectors of <code><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a></code> types
</a></li><li><a href="#g:2">Accessors
</a><ul><li><a href="#g:3">Length information
</a></li><li><a href="#g:4">Extracting subvectors
</a></li><li><a href="#g:5">Overlapping
</a></li></ul></li><li><a href="#g:6">Construction
</a><ul><li><a href="#g:7">Initialisation
</a></li><li><a href="#g:8">Growing
</a></li><li><a href="#g:9">Restricting memory usage
</a></li></ul></li><li><a href="#g:10">Accessing individual elements
</a></li><li><a href="#g:11">Modifying vectors
</a><ul><li><a href="#g:12">Filling and copying
</a></li></ul></li><li><a href="#g:13">Unsafe conversions
</a></li><li><a href="#g:14">Raw pointers
</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Mutable vectors based on Storable.
</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:MVector">MVector</a> s a = <a href="#v:MVector">MVector</a> !<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> !(<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a> a)</li><li class="src short"><span class="keyword">type</span> <a href="#t:IOVector">IOVector</a> = <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Control-Monad-ST.html#t:RealWorld">RealWorld</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:STVector">STVector</a> s = <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s</li><li class="src short"><span class="keyword">class</span>  <a href="#t:Storable">Storable</a> a </li><li class="src short"><a href="#v:length">length</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a></li><li class="src short"><a href="#v:null">null</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</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><li class="src short"><a href="#v:slice">slice</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</li><li class="src short"><a href="#v:init">init</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</li><li class="src short"><a href="#v:tail">tail</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</li><li class="src short"><a href="#v:take">take</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</li><li class="src short"><a href="#v:drop">drop</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</li><li class="src short"><a href="#v:splitAt">splitAt</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; (<a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a, <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a)</li><li class="src short"><a href="#v:unsafeSlice">unsafeSlice</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</li><li class="src short"><a href="#v:unsafeInit">unsafeInit</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</li><li class="src short"><a href="#v:unsafeTail">unsafeTail</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</li><li class="src short"><a href="#v:unsafeTake">unsafeTake</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</li><li class="src short"><a href="#v:unsafeDrop">unsafeDrop</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</li><li class="src short"><a href="#v:overlaps">overlaps</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</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><li class="src short"><a href="#v:new">new</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)</li><li class="src short"><a href="#v:unsafeNew">unsafeNew</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)</li><li class="src short"><a href="#v:replicate">replicate</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 -&gt; m (<a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)</li><li class="src short"><a href="#v:replicateM">replicateM</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 -&gt; m (<a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)</li><li class="src short"><a href="#v:clone">clone</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a -&gt; m (<a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)</li><li class="src short"><a href="#v:grow">grow</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)</li><li class="src short"><a href="#v:unsafeGrow">unsafeGrow</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)</li><li class="src short"><a href="#v:clear">clear</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) 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:read">read</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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:write">write</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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:swap">swap</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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 href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</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:unsafeRead">unsafeRead</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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:unsafeWrite">unsafeWrite</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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:unsafeSwap">unsafeSwap</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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 href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</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:set">set</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) 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:copy">copy</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) 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:move">move</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) 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:unsafeCopy">unsafeCopy</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) 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:unsafeMove">unsafeMove</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) 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:unsafeCast">unsafeCast</a> :: <span class="keyword">forall</span> a b s. (<a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> b) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s b</li><li class="src short"><a href="#v:unsafeFromForeignPtr">unsafeFromForeignPtr</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</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 href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</li><li class="src short"><a href="#v:unsafeFromForeignPtr0">unsafeFromForeignPtr0</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</li><li class="src short"><a href="#v:unsafeToForeignPtr">unsafeToForeignPtr</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; (<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a>, <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a>)</li><li class="src short"><a href="#v:unsafeToForeignPtr0">unsafeToForeignPtr0</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; (<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a>)</li><li class="src short"><a href="#v:unsafeWith">unsafeWith</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:IOVector">IOVector</a> a -&gt; (<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/System-IO.html#t:IO">IO</a> b) -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/System-IO.html#t:IO">IO</a> b</li></ul></div><div id="interface"><h1 id="g:1">Mutable vectors of <code><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a></code> types
</h1><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:MVector" class="def">MVector</a> s a <a href="src/Data-Vector-Storable-Mutable.html#MVector" class="link">Source</a></p><div class="doc"><p>Mutable <code><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a></code>-based vectors
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:MVector" class="def">MVector</a> !<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> !(<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a> a)</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:MVector" class="caption collapser" onclick="toggleSection('i:MVector')">Instances</p><div id="section.i:MVector" 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-Vector-Storable-Mutable.html#t:MVector">MVector</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Generic-Mutable.html#t:MVector">MVector</a> <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> a</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:IOVector" class="def">IOVector</a> = <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Control-Monad-ST.html#t:RealWorld">RealWorld</a><a href="src/Data-Vector-Storable-Mutable.html#IOVector" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:STVector" class="def">STVector</a> s = <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s<a href="src/Data-Vector-Storable-Mutable.html#STVector" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">class</span>  <a name="t:Storable" class="def">Storable</a> a </p><div class="doc"><p>The member functions of this class facilitate writing values of
primitive types to raw memory (which may have been allocated with the
above mentioned routines) and reading values from blocks of raw
memory.  The class, furthermore, includes support for computing the
storage requirements and alignment restrictions of storable types.
</p><p>Memory addresses are represented as values of type <code><code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Ptr.html#t:Ptr">Ptr</a></code> a</code>, for some
<code>a</code> which is an instance of class <code><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a></code>.  The type argument to
<code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Ptr.html#t:Ptr">Ptr</a></code> helps provide some valuable type safety in FFI code (you can't
mix pointers of different types without an explicit cast), while
helping the Haskell type system figure out which marshalling method is
needed for a given pointer.
</p><p>All marshalling between Haskell and a foreign language ultimately
boils down to translating Haskell data structures into the binary
representation of a corresponding data structure of the foreign
language and vice versa.  To code this marshalling in Haskell, it is
necessary to manipulate primitive data types stored in unstructured
memory blocks.  The class <code><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a></code> facilitates this manipulation on
all types for which it is instantiated, which are the standard basic
types of Haskell, the fixed size <code>Int</code> types (<code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int8">Int8</a></code>, <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int16">Int16</a></code>,
<code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int32">Int32</a></code>, <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int64">Int64</a></code>), the fixed size <code>Word</code> types (<code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Word.html#t:Word8">Word8</a></code>, <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Word.html#t:Word16">Word16</a></code>,
<code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Word.html#t:Word32">Word32</a></code>, <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Word.html#t:Word64">Word64</a></code>), <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-StablePtr.html#t:StablePtr">StablePtr</a></code>, all types from <a href="Foreign-C-Types.html">Foreign.C.Types</a>,
as well as <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Ptr.html#t:Ptr">Ptr</a></code>.
</p><p>Minimal complete definition: <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Storable.html#v:sizeOf">sizeOf</a></code>, <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Storable.html#v:alignment">alignment</a></code>, one of <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Storable.html#v:peek">peek</a></code>,
<code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Storable.html#v:peekElemOff">peekElemOff</a></code> and <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Storable.html#v:peekByteOff">peekByteOff</a></code>, and one of <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Storable.html#v:poke">poke</a></code>, <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Storable.html#v:pokeElemOff">pokeElemOff</a></code> and
<code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Storable.html#v:pokeByteOff">pokeByteOff</a></code>.
</p></div><div class="subs instances"><p id="control.i:Storable" class="caption collapser" onclick="toggleSection('i:Storable')">Instances</p><div id="section.i:Storable" class="show"><table><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:Char">Char</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Prelude.html#t:Double">Double</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Prelude.html#t:Float">Float</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int8">Int8</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int16">Int16</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int32">Int32</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int64">Int64</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Word.html#t:Word">Word</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Word.html#t:Word8">Word8</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Word.html#t:Word16">Word16</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Word.html#t:Word32">Word32</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Word.html#t:Word64">Word64</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Ptr.html#t:WordPtr">WordPtr</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Ptr.html#t:IntPtr">IntPtr</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CChar">CChar</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CSChar">CSChar</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CUChar">CUChar</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CShort">CShort</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CUShort">CUShort</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CInt">CInt</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CUInt">CUInt</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CLong">CLong</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CULong">CULong</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CLLong">CLLong</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CULLong">CULLong</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CFloat">CFloat</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CDouble">CDouble</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CPtrdiff">CPtrdiff</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CSize">CSize</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CWchar">CWchar</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CSigAtomic">CSigAtomic</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CClock">CClock</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CTime">CTime</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CIntPtr">CIntPtr</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CUIntPtr">CUIntPtr</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CIntMax">CIntMax</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-C-Types.html#t:CUIntMax">CUIntMax</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> (<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-StablePtr.html#t:StablePtr">StablePtr</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> (<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Ptr.html#t:Ptr">Ptr</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> (<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Ptr.html#t:FunPtr">FunPtr</a> a)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><h1 id="g:2">Accessors
</h1><h2 id="g:3">Length information
</h2><div class="top"><p class="src"><a name="v:length" class="def">length</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a><a href="src/Data-Vector-Storable-Mutable.html#length" class="link">Source</a></p><div class="doc"><p>Length of the mutable vector.
</p></div></div><div class="top"><p class="src"><a name="v:null" class="def">null</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</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-Vector-Storable-Mutable.html#null" class="link">Source</a></p><div class="doc"><p>Check whether the vector is empty
</p></div></div><h2 id="g:4">Extracting subvectors
</h2><div class="top"><p class="src"><a name="v:slice" class="def">slice</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a<a href="src/Data-Vector-Storable-Mutable.html#slice" class="link">Source</a></p><div class="doc"><p>Yield a part of the mutable vector without copying it.
</p></div></div><div class="top"><p class="src"><a name="v:init" class="def">init</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a<a href="src/Data-Vector-Storable-Mutable.html#init" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:tail" class="def">tail</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a<a href="src/Data-Vector-Storable-Mutable.html#tail" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:take" class="def">take</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a<a href="src/Data-Vector-Storable-Mutable.html#take" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:drop" class="def">drop</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a<a href="src/Data-Vector-Storable-Mutable.html#drop" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:splitAt" class="def">splitAt</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; (<a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a, <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a)<a href="src/Data-Vector-Storable-Mutable.html#splitAt" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:unsafeSlice" class="def">unsafeSlice</a><a href="src/Data-Vector-Storable-Mutable.html#unsafeSlice" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a></td><td class="doc"><p>starting index
</p></td></tr><tr><td class="src">-&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a></td><td class="doc"><p>length of the slice
</p></td></tr><tr><td class="src">-&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Yield a part of the mutable vector without copying it. No bounds checks
 are performed.
</p></div></div><div class="top"><p class="src"><a name="v:unsafeInit" class="def">unsafeInit</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a<a href="src/Data-Vector-Storable-Mutable.html#unsafeInit" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:unsafeTail" class="def">unsafeTail</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a<a href="src/Data-Vector-Storable-Mutable.html#unsafeTail" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:unsafeTake" class="def">unsafeTake</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a<a href="src/Data-Vector-Storable-Mutable.html#unsafeTake" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:unsafeDrop" class="def">unsafeDrop</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a<a href="src/Data-Vector-Storable-Mutable.html#unsafeDrop" class="link">Source</a></p></div><h2 id="g:5">Overlapping
</h2><div class="top"><p class="src"><a name="v:overlaps" class="def">overlaps</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</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-Vector-Storable-Mutable.html#overlaps" class="link">Source</a></p></div><h1 id="g:6">Construction
</h1><h2 id="g:7">Initialisation
</h2><div class="top"><p class="src"><a name="v:new" class="def">new</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)<a href="src/Data-Vector-Storable-Mutable.html#new" class="link">Source</a></p><div class="doc"><p>Create a mutable vector of the given length.
</p></div></div><div class="top"><p class="src"><a name="v:unsafeNew" class="def">unsafeNew</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)<a href="src/Data-Vector-Storable-Mutable.html#unsafeNew" class="link">Source</a></p><div class="doc"><p>Create a mutable vector of the given length. The length is not checked.
</p></div></div><div class="top"><p class="src"><a name="v:replicate" class="def">replicate</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 -&gt; m (<a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)<a href="src/Data-Vector-Storable-Mutable.html#replicate" class="link">Source</a></p><div class="doc"><p>Create a mutable vector of the given length (0 if the length is negative)
 and fill it with an initial value.
</p></div></div><div class="top"><p class="src"><a name="v:replicateM" class="def">replicateM</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</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 -&gt; m (<a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)<a href="src/Data-Vector-Storable-Mutable.html#replicateM" class="link">Source</a></p><div class="doc"><p>Create a mutable vector of the given length (0 if the length is negative)
 and fill it with values produced by repeatedly executing the monadic action.
</p></div></div><div class="top"><p class="src"><a name="v:clone" class="def">clone</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a -&gt; m (<a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)<a href="src/Data-Vector-Storable-Mutable.html#clone" class="link">Source</a></p><div class="doc"><p>Create a copy of a mutable vector.
</p></div></div><h2 id="g:8">Growing
</h2><div class="top"><p class="src"><a name="v:grow" class="def">grow</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)<a href="src/Data-Vector-Storable-Mutable.html#grow" class="link">Source</a></p><div class="doc"><p>Grow a vector by the given number of elements. The number must be
 positive.
</p></div></div><div class="top"><p class="src"><a name="v:unsafeGrow" class="def">unsafeGrow</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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 href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a)<a href="src/Data-Vector-Storable-Mutable.html#unsafeGrow" class="link">Source</a></p><div class="doc"><p>Grow a vector by the given number of elements. The number must be
 positive but this is not checked.
</p></div></div><h2 id="g:9">Restricting memory usage
</h2><div class="top"><p class="src"><a name="v:clear" class="def">clear</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) 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-Vector-Storable-Mutable.html#clear" class="link">Source</a></p><div class="doc"><p>Reset all elements of the vector to some undefined value, clearing all
 references to external objects. This is usually a noop for unboxed vectors. 
</p></div></div><h1 id="g:10">Accessing individual elements
</h1><div class="top"><p class="src"><a name="v:read" class="def">read</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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-Vector-Storable-Mutable.html#read" class="link">Source</a></p><div class="doc"><p>Yield the element at the given position.
</p></div></div><div class="top"><p class="src"><a name="v:write" class="def">write</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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-Vector-Storable-Mutable.html#write" class="link">Source</a></p><div class="doc"><p>Replace the element at the given position.
</p></div></div><div class="top"><p class="src"><a name="v:swap" class="def">swap</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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 href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</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-Vector-Storable-Mutable.html#swap" class="link">Source</a></p><div class="doc"><p>Swap the elements at the given positions.
</p></div></div><div class="top"><p class="src"><a name="v:unsafeRead" class="def">unsafeRead</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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-Vector-Storable-Mutable.html#unsafeRead" class="link">Source</a></p><div class="doc"><p>Yield the element at the given position. No bounds checks are performed.
</p></div></div><div class="top"><p class="src"><a name="v:unsafeWrite" class="def">unsafeWrite</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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-Vector-Storable-Mutable.html#unsafeWrite" class="link">Source</a></p><div class="doc"><p>Replace the element at the given position. No bounds checks are performed.
</p></div></div><div class="top"><p class="src"><a name="v:unsafeSwap" class="def">unsafeSwap</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/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 href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</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-Vector-Storable-Mutable.html#unsafeSwap" class="link">Source</a></p><div class="doc"><p>Swap the elements at the given positions. No bounds checks are performed.
</p></div></div><h1 id="g:11">Modifying vectors
</h1><h2 id="g:12">Filling and copying
</h2><div class="top"><p class="src"><a name="v:set" class="def">set</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) 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-Vector-Storable-Mutable.html#set" class="link">Source</a></p><div class="doc"><p>Set all elements of the vector to the given value.
</p></div></div><div class="top"><p class="src"><a name="v:copy" class="def">copy</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) 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-Vector-Storable-Mutable.html#copy" class="link">Source</a></p><div class="doc"><p>Copy a vector. The two vectors must have the same length and may not
 overlap.
</p></div></div><div class="top"><p class="src"><a name="v:move" class="def">move</a> :: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) 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-Vector-Storable-Mutable.html#move" class="link">Source</a></p><div class="doc"><p>Move the contents of a vector. The two vectors must have the same
 length.
</p><p>If the vectors do not overlap, then this is equivalent to <code><a href="Data-Vector-Storable-Mutable.html#v:copy">copy</a></code>.
 Otherwise, the copying is performed as if the source vector were
 copied to a temporary vector and then the temporary vector was copied
 to the target vector.
</p></div></div><div class="top"><p class="src"><a name="v:unsafeCopy" class="def">unsafeCopy</a><a href="src/Data-Vector-Storable-Mutable.html#unsafeCopy" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a</td><td class="doc"><p>target
</p></td></tr><tr><td class="src">-&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a</td><td class="doc"><p>source
</p></td></tr><tr><td class="src">-&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Copy a vector. The two vectors must have the same length and may not
 overlap. This is not checked.
</p></div></div><div class="top"><p class="src"><a name="v:unsafeMove" class="def">unsafeMove</a><a href="src/Data-Vector-Storable-Mutable.html#unsafeMove" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimMonad">PrimMonad</a> m, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a</td><td class="doc"><p>target
</p></td></tr><tr><td class="src">-&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> (<a href="/usr/share/doc/ghc/html/libraries/primitive-0.4.0.1/Control-Monad-Primitive.html#t:PrimState">PrimState</a> m) a</td><td class="doc"><p>source
</p></td></tr><tr><td class="src">-&gt; m <a href="/usr/share/doc/ghc/html/libraries/ghc-prim-0.2.0.0/GHC-Unit.html#t:-40--41-">()</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Move the contents of a vector. The two vectors must have the same
 length, but this is not checked.
</p><p>If the vectors do not overlap, then this is equivalent to <code><a href="Data-Vector-Storable-Mutable.html#v:unsafeCopy">unsafeCopy</a></code>.
 Otherwise, the copying is performed as if the source vector were
 copied to a temporary vector and then the temporary vector was copied
 to the target vector.
</p></div></div><h1 id="g:13">Unsafe conversions
</h1><div class="top"><p class="src"><a name="v:unsafeCast" class="def">unsafeCast</a> :: <span class="keyword">forall</span> a b s. (<a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a, <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> b) =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s b<a href="src/Data-Vector-Storable-Mutable.html#unsafeCast" class="link">Source</a></p><div class="doc"><p><em>O(1)</em> Unsafely cast a mutable vector from one element type to another.
 The operation just changes the type of the underlying pointer and does not
 modify the elements.
</p><p>The resulting vector contains as many elements as can fit into the
 underlying memory block.
</p></div></div><h1 id="g:14">Raw pointers
</h1><div class="top"><p class="src"><a name="v:unsafeFromForeignPtr" class="def">unsafeFromForeignPtr</a><a href="src/Data-Vector-Storable-Mutable.html#unsafeFromForeignPtr" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a> a</td><td class="doc"><p>pointer
</p></td></tr><tr><td class="src">-&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a></td><td class="doc"><p>offset
</p></td></tr><tr><td class="src">-&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a></td><td class="doc"><p>length
</p></td></tr><tr><td class="src">-&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Create a mutable vector from a <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a></code> with an offset and a length.
</p><p>Modifying data through the <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a></code> afterwards is unsafe if the vector
 could have been frozen before the modification.
</p><p>If your offset is 0 it is more efficient to use <code><a href="Data-Vector-Storable-Mutable.html#v:unsafeFromForeignPtr0">unsafeFromForeignPtr0</a></code>.
</p></div></div><div class="top"><p class="src"><a name="v:unsafeFromForeignPtr0" class="def">unsafeFromForeignPtr0</a><a href="src/Data-Vector-Storable-Mutable.html#unsafeFromForeignPtr0" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a> a</td><td class="doc"><p>pointer
</p></td></tr><tr><td class="src">-&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a></td><td class="doc"><p>length
</p></td></tr><tr><td class="src">-&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p><em>O(1)</em> Create a mutable vector from a <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a></code> and a length.
</p><p>It is assumed the pointer points directly to the data (no offset).
 Use <code><a href="Data-Vector-Storable-Mutable.html#v:unsafeFromForeignPtr">unsafeFromForeignPtr</a></code> if you need to specify an offset.
</p><p>Modifying data through the <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a></code> afterwards is unsafe if the vector
 could have been frozen before the modification.
</p></div></div><div class="top"><p class="src"><a name="v:unsafeToForeignPtr" class="def">unsafeToForeignPtr</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; (<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a>, <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a>)<a href="src/Data-Vector-Storable-Mutable.html#unsafeToForeignPtr" class="link">Source</a></p><div class="doc"><p>Yield the underlying <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a></code> together with the offset to the data
 and its length. Modifying the data through the <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a></code> is
 unsafe if the vector could have frozen before the modification.
</p></div></div><div class="top"><p class="src"><a name="v:unsafeToForeignPtr0" class="def">unsafeToForeignPtr0</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:MVector">MVector</a> s a -&gt; (<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a>)<a href="src/Data-Vector-Storable-Mutable.html#unsafeToForeignPtr0" class="link">Source</a></p><div class="doc"><p><em>O(1)</em> Yield the underlying <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a></code> together with its length.
</p><p>You can assume the pointer points directly to the data (no offset).
</p><p>Modifying the data through the <code><a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-ForeignPtr.html#t:ForeignPtr">ForeignPtr</a></code> is unsafe if the vector could
 have frozen before the modification.
</p></div></div><div class="top"><p class="src"><a name="v:unsafeWith" class="def">unsafeWith</a> :: <a href="Data-Vector-Storable-Mutable.html#t:Storable">Storable</a> a =&gt; <a href="Data-Vector-Storable-Mutable.html#t:IOVector">IOVector</a> a -&gt; (<a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Foreign-Ptr.html#t:Ptr">Ptr</a> a -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/System-IO.html#t:IO">IO</a> b) -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/System-IO.html#t:IO">IO</a> b<a href="src/Data-Vector-Storable-Mutable.html#unsafeWith" class="link">Source</a></p><div class="doc"><p>Pass a pointer to the vector's data to the IO action. Modifying data
 through the pointer is unsafe if the vector could have been frozen before
 the modification.
</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>