Pure string:val storage, using structural sharing


Pure string:val storage, using structural sharing.

This module forms a possible basis for effecient immutable datastructures; such as those found in Clojure's PersistentHashMap and PersistentVector.

npm install immutable-hash-trie

var im = require('immutable-hash-trie')
var trie = im.Trie()

Returns a new Trie with the new key:value keys added.

var trie1 = im.Trie()
var trie2 = im.assoc(trie1, 'key', { value: true })

Returns a new Trie without a specific key

var trie1 = im.assoc(im.Trie(), 'key', 'val')
var trie2 = im.dissoc(trie2, 'key')

Retrieves a value from a Trie.

var trie = im.assoc(im.Trie(), 'key', 'val')
im.get(trie, 'key') //= 'val' 

Returns true or false, depending on whether the value is in the Trie.

var trie = im.assoc(im.Trie(), 'key', 'val')
im.has(trie, 'key')         //= true 
im.has(trie, 'not-in-here') //= false 

The hashing and equality functions used on the keys can be overidden by passing an opts object to assoc, dissoc, get and has.

var im = require('immutable-hash-trie')
var opts = {
    eqfunction(ab){ return a === b},
    hashfunction(key){ return parseInt(key, 10) }
var vector = im.assoc(im.Trie(), 3, 'my-val', opts)
var val = im.get(vector, 3, opts)
var vector2 = im.dissoc(vector, 3, opts)
im.has(vector2, 3, opts) // false 

npm test and npm run-script benchmark are your friends.