CrossClj

0.0.8 docs

SourceDocs



RECENT

    flexvec

    Clojars

    Mar 28, 2013


    OWNER
    Michał Marczyk
    michal.marczyk@gmail.com

    Index of all namespaces


    « Project + dependencies

    RRB-Trees for Clojure(Script) -- see Bagwell & Rompf

    flexvec.coreDocsSource
    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 flexvec.core/catvec, performing vector
    concatenation, and flexvec.core/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).
    
    flexvec'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:
    flexvec.core/catvec and flexvec.core/subvec convert their inputs to
    flexvec.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).
    
    flexvec.core also exports its own versions of vector, vector-of and
    vec which always produce flexvec.rrbt.Vector instances. Note that
    vector-of accepts :object as one of the possible type arguments, in
    addition to keywords naming primitive types.