package pvec

All checked builds pass
  1. Overview
  2. Docs
Persistent vectors

Install

dune-project
 Dependency

Authors

Maintainers

Sources

v0.1.1.tar.gz
md5=f3f3ae622e9cfc657de111f40ddeb992
sha512=1dfafbe6ce9e17cdf0a064b0959bd9eaf7f58bed3df1b012256156dfc29e7c8bf362862107dfb04798701cb7eedb2fe380b23a6f9ee10f30c89eaf1fb9061480

Description

Added to opam-repository:

README

Persistent vectors for OCaml

pvec implements persistent vectors that

  • like arrays, store n elements with keys ranging from 0 to n-1,
  • also like arrays, support efficient random read and write access, but
  • unlike arrays, are persistent/immutable and resize dynamically.

Until recently I tried using lists until it stopped making sense, then transitioned to arrays where I had to. The mutable nature of arrays often introduced bugs. In some sense, I was trading speed for safety.

With persistent vectors I can have the best of both worlds. In many cases they strike a good balance between safety and speed.

Documentation

The pvec library exposes a single module Pvec. You can explore its interface online.

  • https://pkel.github.io/pvec/pvec/Pvec/index.html

This documentation is derived from the main branch on Github. You might have obtained a different version of the library from Opam.

If you're interested in the underlying data-structure, I recommend reading hyPiRion's series of blog posts.

License

This library is distributed under the ISC license. See ./LICENSE.

Progress

  • base implementation
  • test random updates & persistence
  • basic documentation
  • setup CI
  • provide a couple of convenience functions (fold, map)
  • write intro to pvec.mli and readme
  • pick license
  • release
  • more benchmarks
  • slice/range support for seq, copy, map & fold

Dependencies (2)

  1. ocaml >= "4.08.1"
  2. dune >= "3.0"

Dev Dependencies (3)

  1. odoc with-doc
  2. ppx_expect with-test
  3. mtime with-test & < "2.0.0"

Optional Dependencies

None

Used by

None

Conflicts

None

Build status

Results of building pvec with each compiler on check.ci.ocaml.org, run of against opam-repository 78c202b. All results for this package.

Each result links to its build log. To keep crawlers from overloading the site, build logs require a GitHub sign-in (see ocurrent/opam-health-check). On your first log, GitHub asks you to “Authorize opam-health-check”, the OCurrent app that runs these checks; it sees only your public profile, not your repositories. The sign-in lasts 30 days.

Version OCaml 4.11 OCaml 4.14 OCaml 5.2 OCaml 5.4 OCaml 5.5
0.1.1 (this version) good good good good good
  • good Package successfully built
  • partial One of the dependencies failed to build
  • bad Package failed to build
  • n/a Package is not available in this environment
  • internal Internal failure