Bitvectors polymorphic in underlying Vector type
- Dominant language
- Haskell
- Stars
- 96
- Forks
- 9
- PR merge metrics
- No merged PRs in 30d
Description
Currently the bitvectors in succinct are represented by `Data.Vector.Unboxed` `Vector`s. Allowing bitvectors of any `Vector` type would, among other things, enable easy disk backing of succinct structures (with an `mmap`'d `Storable` vector).
I have a first cut at this generalization in my [generalize-vector](https://github.com/bgamari/succinct/compare/generalize-vector) branch. This isn't a pull request as I'm not entirely pleased with how intrusive this change is as it sits. I've tried to preserve the existing monomorphic interfaces for ease of use by building them on top of polymorphic primed variants (e.g. [Rose](https://github.com/bgamari/succinct/blob/generalize-vector/src/Succinct/Tree/LOUDS.hs#L53)).
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reviewing the generalize-vector branch and the polymorphic and monomorphic interfaces in src/Succinct/Tree/LOUDS.hs. Compare that first cut with the current implementation and determine how bitvectors can support arbitrary Vector types while preserving the existing interfaces; done means the generalization is integrated without the current intrusive design concerns.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell
- Domain
- data
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100