The clojure core datastructures PersistentHashMap and PersistentVector are based on Philip Bagwells Ideal Hash Trees: http://lampwww.epfl.ch/papers/idealhashtrees.pdf
Several of Chris Okasakis Purely Functional Datastructures are implemented already. http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf Clojure Toolbox http://www.clojure-toolbox.com/ mentions - Merkle <https://github.com/aphyr/merkle> - clj-tuple <https://github.com/ztellman/clj-tuple> - core.rrb-vector <https://github.com/clojure/core.rrb-vector> - data.finger-tree <https://github.com/clojure/data.finger-tree> - data.int-map <https://github.com/clojure/data.int-map> - data.priority-map <https://github.com/clojure/data.priority-map> - data.union-find <https://github.com/jordanlewis/data.union-find> - fast-zip <https://github.com/akhudek/fast-zip> - immutable-bitset <https://github.com/ztellman/immutable-bitset> - ordered <https://github.com/flatland/ordered> - ring-buffer <https://github.com/amalloy/ring-buffer> under "Datastructures". Monads has been implemented many times, check https://github.com/clojure/algo.monads for one example. Mary Rose Cook wrote an impressive as well as entertaining article on implementing Fibonacci Heaps in Clojure http://maryrosecook.com/blog/post/the-fibonacci-heap-ruins-my-life "Sketchy" datastructures exists, https://github.com/bigmlcom/sketchy (bloom, hyperloglog, min-distance hashing etc). Another Bloom Filter: https://github.com/kyleburton/clj-bloom It is said that splay trees aren't very suitable for implementing as an immutable structure because they mutate on read. I guess you'll get quite exact guidelines in the various core libraries on how to implement the Java collection methods (in general, all mutating methods throw methodNotImplementedExceptions). Good luck! /Linus On Monday, August 10, 2015 at 12:31:25 AM UTC+2, William la Forge wrote: > > I've done a lot with AA trees in the past, creating variations that are > immutable, durable (replacing b-trees) and versioned of vectors, maps and > sets. > > I would like to migrate these ideas from Java to Clojure, while > implementing the interfaces appropriate for Clojure. > > Still being very much a newbie, I'd appreciate some pointers, relevant > docs and/or examples. > > Thanks! > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.