Persistent Vector for Elixir

hex.pm version license

Installation

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

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

Description

PersistentVector is an array-like collection of values indexed by contiguous 0-based integer index.

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.

More info

See Full Documentation

See Benchmarks