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.

Reply via email to