An implementation of the confluently persistent vector data structure introduced in Bagwell, Rompf, "RRB-Trees: Efficient Immutable Vectors", EPFL-REPORT-169879, September, 2011.
RRB-Trees build upon Clojure's PersistentVectors, adding logarithmic time concatenation and slicing.
The main API entry points are clojure.core.rrb-vector/catvec, performing vector concatenation, and clojure.core.rrb-vector/subvec, which produces a new vector containing the appropriate subrange of the input vector (in contrast to clojure.core/subvec, which returns a view on the input vector).
core.rrb-vector's vectors can store objects or unboxed primitives. The implementation allows for seamless interoperability with clojure.lang.PersistentVector, clojure.core.Vec (more commonly known as gvec) and clojure.lang.APersistentVector$SubVector instances: clojure.core.rrb-vector/catvec and clojure.core.rrb-vector/subvec convert their inputs to clojure.core.rrb-vector.rrbt.Vector instances whenever necessary (this is a very fast constant time operation for PersistentVector and gvec; for SubVector it is O(log n), where n is the size of the underlying vector).
clojure.core.rrb-vector also exports its own versions of vector and vector-of and vec which always produce clojure.core.rrb-vector.rrbt.Vector instances. Note that vector-of accepts :object as one of the possible type arguments, in addition to keywords naming primitive types.
An implementation of the confluently persistent vector data structure introduced in Bagwell, Rompf, "RRB-Trees: Efficient Immutable Vectors", EPFL-REPORT-169879, September, 2011. RRB-Trees build upon Clojure's PersistentVectors, adding logarithmic time concatenation and slicing. The main API entry points are clojure.core.rrb-vector/catvec, performing vector concatenation, and clojure.core.rrb-vector/subvec, which produces a new vector containing the appropriate subrange of the input vector (in contrast to clojure.core/subvec, which returns a view on the input vector). core.rrb-vector's vectors can store objects or unboxed primitives. The implementation allows for seamless interoperability with clojure.lang.PersistentVector, clojure.core.Vec (more commonly known as gvec) and clojure.lang.APersistentVector$SubVector instances: clojure.core.rrb-vector/catvec and clojure.core.rrb-vector/subvec convert their inputs to clojure.core.rrb-vector.rrbt.Vector instances whenever necessary (this is a very fast constant time operation for PersistentVector and gvec; for SubVector it is O(log n), where n is the size of the underlying vector). clojure.core.rrb-vector also exports its own versions of vector and vector-of and vec which always produce clojure.core.rrb-vector.rrbt.Vector instances. Note that vector-of accepts :object as one of the possible type arguments, in addition to keywords naming primitive types.
An implementation of the confluently persistent vector data structure introduced in Bagwell, Rompf, "RRB-Trees: Efficient Immutable Vectors", EPFL-REPORT-169879, September, 2011.
RRB-Trees build upon Clojure's PersistentVectors, adding logarithmic time concatenation and slicing.
The main API entry points are clojure.core.rrb-vector/catvec, performing vector concatenation, and clojure.core.rrb-vector/subvec, which produces a new vector containing the appropriate subrange of the input vector (in contrast to cljs.core/subvec, which returns a view on the input vector).
The implementation allows for seamless interoperability with cljs.core/PersistentVector and cljs.core.Subvec instances: clojure.core.rrb-vector/catvec and clojure.core.rrb-vector/subvec convert their inputs to clojure.core.rrb-vector.rrbt/Vector instances whenever necessary (this is a very fast constant time operation for PersistentVector; for Subvec it is O(log n), where n is the size of the underlying vector).
clojure.core.rrb-vector also exports its own versions of vector and vec which always produce clojure.core.rrb-vector.rrbt.Vector instances.
An implementation of the confluently persistent vector data structure introduced in Bagwell, Rompf, "RRB-Trees: Efficient Immutable Vectors", EPFL-REPORT-169879, September, 2011. RRB-Trees build upon Clojure's PersistentVectors, adding logarithmic time concatenation and slicing. The main API entry points are clojure.core.rrb-vector/catvec, performing vector concatenation, and clojure.core.rrb-vector/subvec, which produces a new vector containing the appropriate subrange of the input vector (in contrast to cljs.core/subvec, which returns a view on the input vector). The implementation allows for seamless interoperability with cljs.core/PersistentVector and cljs.core.Subvec instances: clojure.core.rrb-vector/catvec and clojure.core.rrb-vector/subvec convert their inputs to clojure.core.rrb-vector.rrbt/Vector instances whenever necessary (this is a very fast constant time operation for PersistentVector; for Subvec it is O(log n), where n is the size of the underlying vector). clojure.core.rrb-vector also exports its own versions of vector and vec which always produce clojure.core.rrb-vector.rrbt.Vector instances.
(catvec)
(catvec v1)
(catvec v1 v2)
(catvec v1 v2 v3)
(catvec v1 v2 v3 v4)
(catvec v1 v2 v3 v4 & vn)
Concatenates the given vectors in logarithmic time.
Concatenates the given vectors in logarithmic time.
(subvec v start)
(subvec v start end)
Returns a new vector containing the elements of the given vector v lying between the start (inclusive) and end (exclusive) indices in logarithmic time. end defaults to end of vector. The resulting vector shares structure with the original, but does not hold on to any elements of the original vector lying outside the given index range.
Returns a new vector containing the elements of the given vector v lying between the start (inclusive) and end (exclusive) indices in logarithmic time. end defaults to end of vector. The resulting vector shares structure with the original, but does not hold on to any elements of the original vector lying outside the given index range.
(vec coll)
Returns a vector containing the contents of coll.
If coll is a vector, returns an RRB vector using the internal tree of coll.
Returns a vector containing the contents of coll. If coll is a vector, returns an RRB vector using the internal tree of coll.
(vector)
(vector x1)
(vector x1 x2)
(vector x1 x2 x3)
(vector x1 x2 x3 x4)
(vector x1 x2 x3 x4 & xn)
Creates a new vector containing the args.
Creates a new vector containing the args.
(vector-of t)
(vector-of t x1)
(vector-of t x1 x2)
(vector-of t x1 x2 x3)
(vector-of t x1 x2 x3 x4)
(vector-of t x1 x2 x3 x4 & xn)
Creates a new vector capable of storing homogenous items of type t, which should be one of :object, :int, :long, :float, :double, :byte, :short, :char, :boolean. Primitives are stored unboxed.
Optionally takes one or more elements to populate the vector.
Creates a new vector capable of storing homogenous items of type t, which should be one of :object, :int, :long, :float, :double, :byte, :short, :char, :boolean. Primitives are stored unboxed. Optionally takes one or more elements to populate the vector.
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close