summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/boot.clj27
-rw-r--r--src/jvm/clojure/lang/RT.java11
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('\\');