216
29%
BSD-3-Clause
Persistent immutable collections for Reason

Immutable Collections For Reason

Pure Reason implementation of persistent immutable data structures.

Features

Immutable-re provides a complete set of efficient persistent immutable data structures for Reason and OCaml, targeting both OCaml native and byte code compilation modes, as well JavaScript using BuckleScript.

The api includes concrete implementations of vectors, sets, and maps. Many implementations support transient mutability for efficient batch mutations. Additionally Immutable-re provides lazy functional iterators and sequences, along with type definitions for basic operators such as equality, comparison, and hashing.

For more details see the API docs.

Installing

Installing via NPM (JS Workflow)

npm install --save immutable-re

Installing immutable via OPAM (native workflow)

# On macOS, install opam via Homebrew:
brew update
brew install opam
# On Linux, see here (you will need opam >= 1.2.2): http://opam.ocaml.org/doc/Install.html

opam init
# Add this to your ~/.bashrc (or ~/.zshrc):
#   eval $(opam config env)

opam update
opam switch 4.02.3
eval $(opam config env)
opam install immutable

Contributing to development

# On macOS, install opam via Homebrew:
brew update
brew install opam
# On Linux, see here (you will need opam >= 1.2.2): http://opam.ocaml.org/doc/Install.html

opam init
# Add this to your ~/.bashrc (or ~/.zshrc):
#   eval $(opam config env)

opam update
opam switch 4.02.3
eval $(opam config env)
git clone git@github.com:facebookincubator/immutable-re.git
cd immutable-re
opam pin add -y immutable .

Status

Immutable-re is under active development and is not yet production ready. We are releasing this early alpha to get community input and contributions. If you are interested in contributing please follow the directions here.

For JavaScript developers needing production ready immutable collections, we recommend using the Reason BuckleScript bindings to Immutable.js.

License

Immutable-re is BSD-licensed. We also provide an additional patent grant.