@jaihindhreddy https://github.com/cgrand/confluent-map/blob/master/src/main/java/net/cgrand/TrieMap_5Bits.java is a patched version of CHAMP to use Clojure interfaces and hash functions (for benchmarking purpose)
Thanks! I think I know what I'm doing this weekend!
Champs in clojurescript exist also
Can you spot where can I find clojurescript version?
https://github.com/bendyworks/lean-map oh, this is it I guess 🙂
Yep that’s what I was thinking of. There’s a talk also
Great, thanks!
Another wrinkle is that until recently Clojure PHM left empty nodes after dissoc, which caused pathological behavior in some of the champ vs hamt benchmarks
Huh, I know that I am slow to realize things sometimes, but it just finally hit me that while Clojure's built-in persistent data structures are (I believe) guaranteed to produce trees (not DAGs) of objects in memory (except for leaf elements that are identical), the confluently persistent ones like RRB vectors, etc. that can quickly concatenate/merge two arbitrary such data structures can be used to concatenate large data structures with themselves, and you can end up with all sorts of reuse of internal objects in a single collection.