steady_vector

Build StatusHex pm

<a name="steadyvector-_Persistent_Vector_for_Erlang_and_Elixir">steady_vector - Persistent Vector for Erlang and Elixir</a>

<a name="Description">Description</a>

steady_vector is an array-like collection of values optimized for tail growth and shrinkage. It's heavily based on Dmitry Kakurin's PersistentVector implementation for Elixir and, other than for some idiomatic changes and a few new functions, steady_vector's interface is conceptually very similar.

steady_vector optimizes the following operations:

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

steady_vector is implemented as a tree with 32-way branching at each level and uses structural sharing for updates. All ideas are borrowed directly from PersistentVector, which in turn borrowed them from Clojure.

<a name="Installation_(Erlang)">Installation (Erlang)</a>

Add steady_vector to your list of dependencies in rebar.config:


{deps,
 [{steady_vector, "1.0.0"}
 ]}.

And then run rebar3 compile

<a name="Installation_(Elixir)">Installation (Elixir)</a>

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


def deps do
[
  {:steady_vector, "1.0.0"}
]
end

And then run mix deps.get

<a name="Requirements">Requirements</a>

The library has been tested on Erlang/OTP versions 17.5, 18.3, 19.{0..3}, and 20.{0..1}. The supported build tool is rebar3.

<a name="More_info">More info</a>

See benchmarks.

See API reference indexed below.

Modules

steady_vector