All Projects → raviqqe → Hamt

raviqqe / Hamt

Licence: unlicense
Immutable and Memory-Efficient Maps and Sets in Go

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Hamt

Collectable
High-performance immutable data structures for modern JavaScript and TypeScript applications. Functional interfaces, deep/composite operations API, mixed mutability API, TypeScript definitions, ES2015 module exports.
Stars: ✭ 233 (+9.39%)
Mutual labels:  immutable, set, map
Imtools
Fast and memory-efficient immutable collections and helper data structures
Stars: ✭ 85 (-60.09%)
Mutual labels:  immutable, functional-programming, map
Immutable Tuple
Immutable finite list objects with constant-time equality testing (===) and no memory leaks.
Stars: ✭ 29 (-86.38%)
Mutual labels:  immutable, functional-programming
Buckets Js
A complete, fully tested and documented data structure library written in pure JavaScript.
Stars: ✭ 1,128 (+429.58%)
Mutual labels:  set, map
Imlazy
😴 Functional programming with lazy immutable iterables
Stars: ✭ 89 (-58.22%)
Mutual labels:  immutable, functional-programming
Collection
A PHP library for representing and manipulating collections.
Stars: ✭ 488 (+129.11%)
Mutual labels:  set, map
Performance Analysis Js
Map/Reduce/Filter/Find Vs For loop Vs For each Vs Lodash vs Ramda
Stars: ✭ 532 (+149.77%)
Mutual labels:  functional-programming, map
Pfun
Functional, composable, asynchronous, type-safe Python.
Stars: ✭ 75 (-64.79%)
Mutual labels:  immutable, functional-programming
Kind Of
Get the native JavaScript type of a value, fast. Used by superstruct, micromatch and many others!
Stars: ✭ 268 (+25.82%)
Mutual labels:  set, map
Containers
This library provides various containers. Each container has utility functions to manipulate the data it holds. This is an abstraction as to not have to manually manage and reallocate memory.
Stars: ✭ 125 (-41.31%)
Mutual labels:  set, map
Gods
GoDS (Go Data Structures). Containers (Sets, Lists, Stacks, Maps, Trees), Sets (HashSet, TreeSet, LinkedHashSet), Lists (ArrayList, SinglyLinkedList, DoublyLinkedList), Stacks (LinkedListStack, ArrayStack), Maps (HashMap, TreeMap, HashBidiMap, TreeBidiMap, LinkedHashMap), Trees (RedBlackTree, AVLTree, BTree, BinaryHeap), Comparators, Iterators, …
Stars: ✭ 10,883 (+5009.39%)
Mutual labels:  set, map
List
🐆 An immutable list with unmatched performance and a comprehensive functional API.
Stars: ✭ 1,604 (+653.05%)
Mutual labels:  immutable, functional-programming
Php Enum
Simple and fast implementation of enumerations with native PHP
Stars: ✭ 446 (+109.39%)
Mutual labels:  set, map
Koazee
A StreamLike, Immutable, Lazy Loading and smart Golang Library to deal with slices.
Stars: ✭ 446 (+109.39%)
Mutual labels:  immutable, functional-programming
Mori Ext
Function bind syntax wrappers for mori
Stars: ✭ 15 (-92.96%)
Mutual labels:  immutable, functional-programming
Redisson
Redisson - Redis Java client with features of In-Memory Data Grid. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, MyBatis, RPC, local cache ...
Stars: ✭ 17,972 (+8337.56%)
Mutual labels:  set, map
Redux Data Structures
Reducer factory functions for common data structures: counters, maps, lists (queues, stacks), sets, etc.
Stars: ✭ 157 (-26.29%)
Mutual labels:  set, map
NonEmptyCollections
A type-safe implementation for collections that cannot be empty. Life is too short for emptiness-checks!
Stars: ✭ 45 (-78.87%)
Mutual labels:  map, set
js-collections-map-set
Repository to have example code to demonstrate JavaScript Map and Set data structures.
Stars: ✭ 21 (-90.14%)
Mutual labels:  map, set
Bqn
An APL-like programming language. Self-hosted!
Stars: ✭ 100 (-53.05%)
Mutual labels:  immutable, functional-programming

hamt

GitHub Action Codecov Go Report Card License

Immutable and Memory Efficient Maps and Sets in Go.

This package hamt provides immutable collection types of maps (associative arrays) and sets implemented as Hash-Array Mapped Tries (HAMTs). All operations of the collections, such as insert and delete, are immutable and create new ones keeping original ones unmodified.

Hash-Array Mapped Trie (HAMT) is a data structure popular as a map (a.k.a. associative array or dictionary) or set. Its immutable variant is adopted widely by functional programming languages like Scala and Clojure to implement immutable and memory-efficient associative arrays and sets.

Installation

go get github.com/raviqqe/hamt

Documentation

GoDoc

Technical notes

The implementation canonicalizes tree structures of HAMTs by eliminating intermediate nodes during delete operations as described in the CHAMP paper.

References

License

The Unlicense

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].