[erlang-questions] optimal way to append an element in a list inside a map

Richard A. O'Keefe ok@REDACTED
Wed Aug 30 02:18:55 CEST 2017



On 30/08/17 6:41 AM, Caragea Silviu wrote:
> Hmm,
>
> Basically what you are saying is that any update over a map requires
> rebuilding of the entire map ?

It doesn't take much poking around on the Web before you discover
that Erlang maps use "a HAMT (Hash-Array Mapped Trie) internally once 
the map grows enough. It is a clever data structure which combines the 
properties of a hash table with a (level compressed) trie to provide 
fast lookup as well as persistence. This is the same data structure 
languages like Clojure, Scala and Haskell (unordered-containers) use. 
They were designed by the now late Phil Bagwell and the Erlang variant 
leans itself up against the work of Rich Hickey in Clojure."
-- Jesper L. Andersen, at
https://medium.com/@jlouis666/breaking-erlang-maps-1-31952b8729e6

Large maps in Erlang are therefore trees with fairly wide nodes,
but updating a map WON'T copy the whole thing.




More information about the erlang-questions mailing list