[Haskell-cafe] vector to uvector and back again

Dan Doel dan.doel at gmail.com
Fri Feb 12 07:28:17 EST 2010


On Thursday 11 February 2010 8:54:15 pm Dan Doel wrote:
> On Thursday 11 February 2010 12:43:10 pm stefan kersten wrote:
> > On 10.02.10 19:03, Bryan O'Sullivan wrote:
> > > I'm thinking of switching the statistics library over to using vector.
> > 
> > that would be even better of course! an O(0) solution, at least for me ;)
> > let me know if i can be of any help (e.g. in testing). i suppose
> > uvector-algorithms would also need to be ported to vector, then.
> 
> I could do this.

To this end, I've done a preliminary port of the library, such that all the 
modules compile. I've just used safe operations so far, so it's probably a 
significant decrease in performance over the 0.2 uvector-algorithms (unless 
perhaps you turn off the bounds checking flag), but it's a start. It can be 
gotten with:

  darcs get http://code.haskell.org/~dolio/vector-algorithms

I only encountered a couple snags during the porting so far:

  * swap isn't exported from D.V.Generic.Mutable, so I'm using my own.
  * I use a copy with an offset into the from and to arrays, and with a
    length (this is necessary for merge sort). However, I only saw a whole
    array copy (and only with identical sizes) in vector (so I wrote my own
    again).
  * Some kind of thawing of immutable vectors into mutable vectors, or other
    way to copy the former into the latter would be useful. Right now I'm
    using unstream . stream, but I'm not sure that's the best way to do it.

Other than that, things went pretty smoothly.

I haven't ported the test suite or benchmarks yet, so I don't recommend that 
anyone actually uses this for anything important yet.

Cheers,
-- Dan


More information about the Haskell-Cafe mailing list