Andy, to take advantage of the Red-Black Tree, I'm looking for public API access to the branches. (I'm not looking for a work-around.)
More discussion on this at SO: http://stackoverflow.com/questions/1981859/finding-keys-closest-to-a-given-value-for-clojure-sorted-maps Thanks to both Michał Marczyk and Andy for commenting on CLJ-1008 ( http://dev.clojure.org/jira/browse/CLJ-1008). On Thursday, February 19, 2015 at 1:02:53 PM UTC-5, Andy Fingerhut wrote: > > I haven't checked carefully, but from at least a quick look it appears > that implementing the NavigableMap and NavigableSet interfaces could be > done by using the existing subseq and rsubseq functions in clojure.core? > > It doesn't give you access to subtree nodes directly, but perhaps it is > sufficient for your purposes? > > Andy > > On Wed, Feb 18, 2015 at 6:04 PM, David James <david...@gmail.com > <javascript:>> wrote: > >> Summary: I'd like to find a public API to work with the underlying tree >> of a sorted-map. >> >> For example: >> >> (def t (sorted-map 1 :a 2 :b 3 :c 4 :d 5 :e 6 :f)) >> >> The underlying implementation of sorted-map uses a PersistentTreeMap, >> which can be accessed with `tree`: >> >> (.tree t) ;=> [2 :b] >> >> I have not found a way to access the left and right branches, since >> calling `left` fails: >> >> (.left (.tree t)) >> >> IllegalArgumentException Can't call public method of non-public class: >> public clojure.lang.PersistentTreeMap$Node >> clojure.lang.PersistentTreeMap$BlackBranch.left() >> clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:88) >> >> Perhaps it would be reasonable to make such calls possible, at least from >> the Java API (without reflection)? >> >> CLJ-1008 (http://dev.clojure.org/jira/browse/CLJ-1008) offers one >> possible way to support a public API. It was created in 2012. Perhaps it >> could use another look. Thoughts? >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clo...@googlegroups.com >> <javascript:> >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+u...@googlegroups.com <javascript:> >> 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+u...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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.