I don&#39;t quite understand how Data.Array.Diff work.<br>I tried this:<br><br>&gt; let arr = listArray (1,3) [1..3] :: DiffArray Int Int<br><br>then:<br>&gt; replaceDiffArray arr [(1, 777)]<br>array (1,3) [(1,1),(2,777),(3,3)]<br>
Why when replacing first element the second one changes?<br><br>and also trying to add 4-th element results in:<br>Prelude Data.Array.Diff&gt; replaceDiffArray arr [(4, 444)]<br>array (1,3) [(1,1),(2,2),(3,3)]<br><br>It looks like replaceDiffArray can not be used to add new element to the end of array?<br>
<br><br>Thanks,<br>Dima<br><br><div class="gmail_quote">On Thu, Jul 10, 2008 at 10:59 PM, Jefferson Heard &lt;<a href="mailto:jefferson.r.heard@gmail.com">jefferson.r.heard@gmail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Two questions. &nbsp;How often does the array change, and how big does it<br>
get? &nbsp;It may well be that you just copy it and take the hit, as<br>
that&#39;ll be cheaper (even in C, incidentally) than any other solution,<br>
if it&#39;s a short array or if the updates happen rarely.<br>
<br>
If not, try using Data.Array.Diff and replaceDiffArray. &nbsp;This is<br>
usually fairly efficient for most applications.<br>
<br>
By the way, depending on the type of the data you&#39;re putting into<br>
these arrays, Data.ByteString might be a good choice as well.<br>
<div><div></div><div class="Wj3C7c"><br>
On Thu, Jul 10, 2008 at 12:12 PM, Felipe Lessa &lt;<a href="mailto:felipe.lessa@gmail.com">felipe.lessa@gmail.com</a>&gt; wrote:<br>
&gt; 2008/7/10 Dmitri O.Kondratiev &lt;<a href="mailto:dokondr@gmail.com">dokondr@gmail.com</a>&gt;:<br>
&gt;&gt; allows construct an array of a fixed size. How to add more elements to the<br>
&gt;&gt; array later?<br>
&gt;<br>
&gt; I can&#39;t really answer your question, however I bet that it would<br>
&gt; require allocating another, bigger array and copying the old elements<br>
&gt; over, at least from time to time. So you may want to take a look at<br>
&gt; Data.Sequence[1], supporting O(1) append on both sides and (sort of)<br>
&gt; O(log i) for accessing the i-th element.<br>
&gt;<br>
&gt; [1] <a href="http://www.haskell.org/ghc/docs/latest/html/libraries/containers/Data-Sequence.html" target="_blank">http://www.haskell.org/ghc/docs/latest/html/libraries/containers/Data-Sequence.html</a><br>
&gt;<br>
&gt; HTH,<br>
&gt;<br>
&gt; --<br>
&gt; Felipe.<br>
</div></div>&gt; _______________________________________________<br>
&gt; Haskell-Cafe mailing list<br>
&gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
&gt;<br>
<font color="#888888"><br>
<br>
<br>
--<br>
I try to take things like a crow; war and chaos don&#39;t always ruin a<br>
picnic, they just mean you have to be careful what you swallow.<br>
<br>
-- Jessica Edwards<br>
</font></blockquote></div><br><br clear="all"><br>