Skip to content

Latest commit

 

History

History
41 lines (30 loc) · 1.3 KB

README.md

File metadata and controls

41 lines (30 loc) · 1.3 KB

Persistent Vector for Elixir

hex.pm version hex.pm docs license

Description

PersistentVector is an array-like collection of values indexed by contiguous 0-based integer index and optimized for growing/shrinking at the end.

PersistentVector optimizes the following operations:

  • Get element count
  • Lookup element by index
  • Update element by index
  • Adding new element to the end
  • Removing element from the end
  • Enumeration

Get count operation is O(1), most others are O(log32(N)).

PersistentVector is implemented as a trie with 32-way branching at each level and uses structural sharing for updates. All ideas are borrowed directly from Clojure, yet the implementation (and all the bugs) are my own.

Installation

Add persistent_vector to your list of dependencies in mix.exs:

def deps do
[
  {:persistent_vector, "~> 0.1.4"}
]
end

And then run mix deps.get

More info

See Full Documentation

See Benchmarks