On Wed, Mar 25, 2009 at 7:21 AM, hoeck <i_am_wea...@kittymail.com> wrote: > > there is already a filed issue and a patch from Timothy Pratley which > adds sorted-set-by to clojure: > http://code.google.com/p/clojure/issues/detail?id=76&colspec=ID%20Type%20Status%20Priority%20Reporter%20Owner%20Summary > > But its priority is set tow "low".
Until the patch is included, you could use this: (import '(clojure.lang PersistentTreeMap APersistentSet Reversible Sorted)) (defn sorted-set-by [cmp & items] ((fn mkset [m #^PersistentTreeMap impl] (proxy [APersistentSet Reversible Sorted] [m impl] (disjoin [k] (if (contains? impl k) (mkset m (dissoc impl k)) this)) (cons [k] (if (contains? impl k) this (mkset m (assoc impl k k)))) (empty [] (mkset m (empty impl))) (rseq [] (.seq this false)) (withMeta [m2] (mkset m2 impl)) (comparator [] (.comparator impl)) (entryKey [e] e) (seq ([] (keys impl)) ([asc] (keys (.seq impl asc)))) (seqFrom [k asc] (keys (.seqFrom impl k asc))))) nil (apply sorted-map-by cmp (interleave items items)))) user=> (sorted-set-by > 1 2 3 4 5) #{5 4 3 2 1} --Chouser --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---