order-statistic-tree alternatives and similar packages
Based on the "data" category.
Alternatively, view order-statistic-tree alternatives based on common mentions on social networks and blogs.
-
proto-lens
API for protocol buffers using modern Haskell language and library patterns. -
microlens
A lightweight (but compatible with ‘lens’) lenses library -
msgpack
Haskell implementation of MessagePack / msgpack.org[Haskell] -
extensible
Extensible records, variants, structs, effects, tangles -
file-embed
Use Template Haskell to embed file contents directly. -
base64-bytestring
Fast base64 encoding and decoding for Haskell. -
asn1-encoding
ASN1 Raw/BER/DER/CER reader/writer in haskell -
data-category
Library of categories, with categorical constructions on them -
interpolatedstring-perl6
QuasiQuoter for Perl6-style multi-line interpolated strings with q, qq and qc support. -
buffer-builder
Haskell library for efficiently building up buffers -
language-hcl
language-hcl contains HCL (Hashicorp Configuration Language) parsers and pretty-printers for the Haskell programming language -
histogram-fill
Filling and manupulation with histograms -
cassava-conduit
Conduit interface for cassava [Haskell] -
finite-typelits
A type inhabited by finitely many values, indexed by type-level naturals. -
phone-numbers
Incomplete bindings to libphonenumber for Haskell -
data-object-yaml
Serialize data to and from Yaml files -
attoparsec-iteratee
An adapter to convert attoparsec Parsers into blazing-fast Iteratees -
filesystem-trees
Traverse and manipulate directories as lazy rose trees -
data-structure-inferrer
A program that analyzes source code with a data-structure wildcard and suggests the right one. -
syb-with-class
Fork of http://patch-tag.com/r/Saizan/syb-with-class -
range-set-list
Memory efficient sets with continuous ranges of elements. List based implementation. -
currency
Types representing standard and non-standard currencies -
schedule-planner
Calculate an ideal schedule layout from a set of timeslots -
type-iso
Expresses isomorphic and injective relations between types. -
unamb-custom
Functional concurrency with unambiguous choice, using a custom scheduler. -
procrastinating-variable
Haskell values that cannot be evaluated immediately. -
resource-pool-catchio
A high-performance striped resource pooling implementation for Haskell
Collect and Analyze Billions of Data Points in Real Time
Do you think we are missing an alternative of order-statistic-tree or a related project?
README
Order Statistic Tree
This repository contains an implementation of order statistic tree in Haskell programming language.
I could not find an order statistic tree at Hackage, so I have to develop one.
This implementation uses weight-balanced trees as desribed in
- Hirai, Yoichi, and Kazuhiko Yamamoto. "Balancing weight-balanced trees." Journal of Functional Programming 21.03 (2011): 287-307.
Also some of its code is based on code from containers package.
Implementation of order statistic tree is described in
- Cormen, T.H., Leiserson, Rivest, Stein. Introduction to algorithms. The MIT Press. 3rd ed.
Installation
This package will be deployed to hackage, so you can install it using cabal:
cabal install order-statistic-tree
Building
cabal configure
cabal build
Testing
cabal configure --enable-tests --enable-benchmarks
cabal test
Benchmarks
I tried to make this tree as fast as possible. I'm not bos, but results on my i7-4790 with 16Gb RAM are following:
- OSTree was created from 1.000.000 random numbers in 2.087 ± 0.021 s (e.g. for Data.Map.Strict - 1.977 ± 0.016 s);
- deletion from OSTree with 1.000.000 random numbers was made in 13.94 ± 0.93 ms;
- lookup from OSTree with 1.000.000 random numbers was made in 208.2 ± 3.48 ns;
- selection from OSTree with 1.000.000 random numbers was made in 92.72 ± 1.91 ns;
- full testing protocol can be found in result-bench.txt.
cabal configure --enable-tests --enable-benchmarks
cabal bench
If someone knows how to improve these results or benchmarking itself, please don't hesitate to contact me