clojure-dev

Issues: https://clojure.atlassian.net/browse/CLJ | Guide: https://insideclojure.org/2015/05/01/contributing-clojure/
cgrand 2019-08-16T10:02:41.273200Z

@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)

👍 1
💯 1
❤️ 1
🦜 2
jaihindhreddy 2019-08-16T10:22:29.274200Z

Thanks! I think I know what I'm doing this weekend!

favila 2019-08-16T11:33:39.274900Z

Champs in clojurescript exist also

uneman 2019-08-20T05:39:30.287700Z

Can you spot where can I find clojurescript version?

uneman 2019-08-20T05:47:22.288Z

https://github.com/bendyworks/lean-map oh, this is it I guess 🙂

favila 2019-08-20T12:36:25.288900Z

Yep that’s what I was thinking of. There’s a talk also

favila 2019-08-20T12:39:35.289200Z

https://youtu.be/GibNOQVelFY

uneman 2019-08-20T14:05:23.289400Z

Great, thanks!

favila 2019-08-16T11:35:52.277300Z

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

2019-08-16T19:55:00.279500Z

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.