persistent-vector icon indicating copy to clipboard operation
persistent-vector copied to clipboard

Persistent vectors for Haskell based on array mapped tries

Results 10 persistent-vector issues
Sort by recently updated
recently updated
newest added

Setting out to implement the ideas in #12. * Store a `Vector_` in the root node instead of an `Array` of `Vector_`s. This simplifies almost everything and should make the...

It's a bit annoying that `drop` and `append` allocate intermediate lists of individual elements. We can break up a vector (or part of one) into a type like this: ```haskell...

To make consecutive (unboxed) `snoc` and (future) `unsnoc` operations faster, we might consider more compact representations of the tails. In particular, we can "chunk" them if we like. Something like...

This is kind of a big challenge. The data constructors for the internal nodes shouldn't actually be necessary. We should be able to get rid of them using `primitive-unlifted`, or...

We currently hard-code 5, 32, 0x1f, etc., throughout the module. It would be better to use top-level constants (or, better, parameterize the package with backpack, however that works). Completely aside...

We need some nasty crud to support GHC versions before 7.10. I'd love to drop support for those and strip out the nonsense like qualified imports of `Control.Applicative`.

Data.Vector.Persistent.Array was taken from unordered-containers. I don't recall why - perhaps `primitive` was not mature enough at the time. It seems like it should be possible to just use `Array`...

The arrays are fairly small, and, just as importantly, they're used in a "mostly-pure" fashion. So performance will almost certainly be better with `SmallArray#` than `Array#`.

Or `viewr`, or whatever you want to call it. I've done a bit of work starting this, but I may dive into #12 first; that's going to be terribly disruptive,...

`unordered-containers` has a totally unsafe insertion function used to implement `fromList` and similar by mutating "immutable" maps with the help of `unsafeThaw` and `unsafeFreeze`. We could do something similar here,...