diff options
author | Chas Emerick <cemerick@snowtide.com> | 2009-06-17 18:25:14 -0400 |
---|---|---|
committer | Chouser <chouser@n01se.net> | 2009-10-28 22:04:35 -0400 |
commit | 9e810bf17700982eb1a3a5cf21c0fcba6bc0eea5 (patch) | |
tree | 5c23cd8093ecee48c983d08f0ee0cc82f5db08e0 | |
parent | d910b3d997e1c40528aab2212fe356a8598bb738 (diff) |
added sorted-set-by, adapted from timothypratley's patch, fixes #79
Signed-off-by: Chouser <chouser@n01se.net>
-rw-r--r-- | src/clj/clojure/core.clj | 22 | ||||
-rw-r--r-- | src/jvm/clojure/lang/PersistentTreeSet.java | 27 |
2 files changed, 41 insertions, 8 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj index 90e3f76f..95402a00 100644 --- a/src/clj/clojure/core.clj +++ b/src/clj/clojure/core.clj @@ -266,24 +266,30 @@ "Returns a new hash set with supplied keys." ([] #{}) ([& keys] - (. clojure.lang.PersistentHashSet (create keys)))) + (clojure.lang.PersistentHashSet/create keys))) (defn sorted-map "keyval => key val Returns a new sorted map with supplied mappings." ([& keyvals] - (. clojure.lang.PersistentTreeMap (create keyvals)))) - -(defn sorted-set - "Returns a new sorted set with supplied keys." - ([& keys] - (. clojure.lang.PersistentTreeSet (create keys)))) + (clojure.lang.PersistentTreeMap/create keyvals))) (defn sorted-map-by "keyval => key val Returns a new sorted map with supplied mappings, using the supplied comparator." ([comparator & keyvals] - (. clojure.lang.PersistentTreeMap (create comparator keyvals)))) + (clojure.lang.PersistentTreeMap/create comparator keyvals))) + +(defn sorted-set + "Returns a new sorted set with supplied keys." + ([& keys] + (clojure.lang.PersistentTreeSet/create keys))) + +(defn sorted-set-by + "Returns a new sorted set with supplied keys, using the supplied comparator." + ([comparator & keys] + (clojure.lang.PersistentTreeSet/create comparator keys))) + ;;;;;;;;;;;;;;;;;;;; (def diff --git a/src/jvm/clojure/lang/PersistentTreeSet.java b/src/jvm/clojure/lang/PersistentTreeSet.java index f6f50125..e7e625de 100644 --- a/src/jvm/clojure/lang/PersistentTreeSet.java +++ b/src/jvm/clojure/lang/PersistentTreeSet.java @@ -27,6 +27,15 @@ public static PersistentTreeSet create(Object... init){ return ret; } +public static PersistentTreeSet create(Comparator comp, Object... init){ + PersistentTreeSet ret = new PersistentTreeSet(null, new PersistentTreeMap(null, comp)); + for(int i = 0; i < init.length; i++) + { + ret = (PersistentTreeSet) ret.cons(init[i]); + } + return ret; +} + public static PersistentTreeSet create(List init){ PersistentTreeSet ret = EMPTY; for(Object key : init) @@ -36,6 +45,15 @@ public static PersistentTreeSet create(List init){ return ret; } +public static PersistentTreeSet create(Comparator comp, List init){ + PersistentTreeSet ret = new PersistentTreeSet(null, new PersistentTreeMap(null, comp)); + for(Object key : init) + { + ret = (PersistentTreeSet) ret.cons(key); + } + return ret; +} + static public PersistentTreeSet create(ISeq items){ PersistentTreeSet ret = EMPTY; for(; items != null; items = items.next()) @@ -45,6 +63,15 @@ static public PersistentTreeSet create(ISeq items){ return ret; } +static public PersistentTreeSet create(Comparator comp, ISeq items){ + PersistentTreeSet ret = new PersistentTreeSet(null, new PersistentTreeMap(null, comp)); + for(; items != null; items = items.next()) + { + ret = (PersistentTreeSet) ret.cons(items.first()); + } + return ret; +} + PersistentTreeSet(IPersistentMap meta, IPersistentMap impl){ super(meta, impl); } |