persistent-vector: A persistent sequence based on array mapped tries
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
Warnings:
- 'ghc-options: -O2' is rarely needed. Check that it is giving a real benefit and not just imposing longer compile times on your users.
This package provides persistent vectors based on array mapped tries. The implementation is based on the persistent vectors used in clojure, but in a Haskell-style API. The API is modeled after Data.Sequence from the containers library.
Technically, the element-wise operations are O(log(n)), but the underlying tree cannot be more than 7 or 8 levels deep so this is effectively constant time.
One change from the clojure implementation is that this version supports
O(1) slicing, though it does cheat a little. Slices retain references
to elements that cannot be indexed. These extra references (and the space
they occupy) can be reclaimed by shrink
ing the slice. This seems like
a reasonable tradeoff, and, I believe, mirrors the behavior of the vector
library.
Highlights:
O(1) append element, indexing, updates, length, and slicing
Reasonably compact representation
[Skip to Readme]
Properties
Versions | 0.1.0.0, 0.1.0.1, 0.1.0.3, 0.1.1, 0.2.0, 0.2.0 |
---|---|
Change log | ChangeLog.md |
Dependencies | base (>=4 && <5), deepseq (>=1 && <1.5), semigroups (>=0.18 && <0.19), transformers (>=0.3 && <0.6) [details] |
License | BSD-3-Clause |
Author | Tristan Ravitch |
Maintainer | tristan@ravit.ch |
Category | Data |
Home page | https://github.com/travitch/persistent-vector |
Bug tracker | https://github.com/travitch/persistent-vector/issues |
Source repo | head: git clone git://github.com/travitch/persistent-vector.git |
Uploaded | by TristanRavitch at 2020-10-29T06:21:20Z |
Modules
[Index] [Quick Jump]
- Data
- Vector
Downloads
- persistent-vector-0.2.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees