[Haskell-cafe] bytestring vs. uvector

Austin Seipp mad.one at gmail.com
Sun Mar 8 03:27:23 EDT 2009


Excerpts from Bryan O'Sullivan's message of Sun Mar 08 00:45:03 -0600 2009:
> uvector is, if my memory serves me correctly, a fork of the vector library.
> It uses modern stream fusion, but is under active development and is a
> little scary. I'm a little unclear on the exact difference between uvector
> and vector. Both use arrays that are not pinned, so they can't be readily
> used with foreign code. If you want to use either library, understand that
> you're embarking on a bracing adventure.

vector and uvector are roughly based on the same technology; uvector
is - as far as I remember - a fork of some of the old DPH code which
uses stream fusion which Don cleaned up and worked on (and it's proven
pretty useful, and people are still hacking on it.)

vector however, has the notion of 'recycling arrays' when it does
array operations. The technique is in fact quite similar to stream
fusion. Roman L. built this from scratch I think, so it's quite a bit
more unused and less stable than even uvector is maybe, but I suppose
you could say it's kind of a superset of uvector. Hopefully though
it should mature a little, and the plans are to have the technology
from both of these folded into the Data Parallel Haskell project so we
get fast array operations+automatic parallelisation.

For info, see Roman's paper, 'Recycle your arrays!'

http://www.cse.unsw.edu.au/~rl/publications/recycling.html

Austin


More information about the Haskell-Cafe mailing list