diff options
-rw-r--r-- | src/boot.clj | 27 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 11 |
2 files changed, 35 insertions, 3 deletions
diff --git a/src/boot.clj b/src/boot.clj index cea2a5e9..2570a060 100644 --- a/src/boot.clj +++ b/src/boot.clj @@ -404,13 +404,13 @@ (if (seq coll) (thisfn f (rest coll) (first coll)) (f))) - ([f coll val] + ([f val coll] (if (seq coll) - (recur f (rest coll) (f val (first coll))) + (recur f (f val (first coll)) (rest coll)) val))) (defn reverse [coll] - (reduce conj coll nil)) + (reduce conj nil coll)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; fn stuff ;;;;;;;;;;;;;;;; @@ -530,6 +530,26 @@ (rest vs)) map))) +(defn line-seq [#^java.io.BufferedReader rdr] + (let [line (. rdr (readLine))] + (when line + (lazy-cons line (line-seq rdr))))) + +(defn sort + ([#^java.util.Collection coll] + (when (and coll (not (. coll (isEmpty)))) + (let [a (. coll (toArray))] + (. java.util.Arrays (sort a)) + (seq a)))) + ([#^java.util.Collection coll #^java.util.Comparator comp] + (when (and coll (not (. coll (isEmpty)))) + (let [a (. coll (toArray))] + (. java.util.Arrays (sort a comp)) + (seq a))))) + +(defn sort-by [keyfn #^java.util.Collection coll] + (sort coll (fn [x y] (. (keyfn x) (compareTo (keyfn y)))))) + ;; evaluation (defn eval [form] @@ -787,6 +807,7 @@ peek pop nth contains get assoc dissoc find keys vals merge key val + line-seq sort sort-by rseq sym name namespace locking .. -> defmulti defmethod remove-method binding find-var diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index d7893ed3..941a7f87 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -13,6 +13,7 @@ package clojure.lang; import java.util.concurrent.atomic.AtomicInteger; +import java.util.Map; import java.io.*; import java.lang.reflect.Array; @@ -725,6 +726,16 @@ static public void print(Object x, Writer w) throws Exception{ } w.write(']'); } +// else if(x instanceof Map.Entry) +// { +// Map.Entry e = (Map.Entry) x; +// w.write('{'); +// print(e.getKey(),w); +// w.write(' '); +// print(e.getValue(),w); +// +// w.write('}'); +// } else if(x instanceof Character) { w.write('\\'); |