I&#39;ve been meaning to generalize Data.Rope in my rope library to use Vector rather than ByteString. <div><br></div><div>Ultimately it looks like a FingerTree of Vector&#39;s using length as the monoid.</div><div><br></div>
<div>The vectors can be sliced cheaply and the fingertree as a whole supports cheap splicing.</div><div><br></div><div>-Edward Kmett<br><div><div><br></div><div><div class="gmail_quote">On Wed, Apr 7, 2010 at 6:22 PM, Dan Piponi <span dir="ltr">&lt;<a href="mailto:dpiponi@gmail.com">dpiponi@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">I have a situation where I have a bunch of lists and I&#39;ll frequently<br>
be making new lists from the old ones by applying map and filter. The<br>
map will be applying a function that&#39;s effectively the identity on<br>
most elements of the list, and filter will be using a function that<br>
usually gives True. This means that there is potential for a large<br>
amount of sharing between these lists that could be exploited,<br>
something that ordinary lists would do badly. Does anyone have a<br>
recommendation for a pure functional data structure for this case?<br>
<br>
(It reminds me a bit of my own antidiagonal type, but that&#39;s not well<br>
adapted to the highly dynamic situation I&#39;m describing.)<br>
<font color="#888888">--<br>
Dan<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</font></blockquote></div><br></div></div></div>