ekmett / ekmett/succinct

Bitvectors polymorphic in underlying Vector type

Open
#8 2 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.