summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-06-12 12:14:26 +0000
committerRich Hickey <richhickey@gmail.com>2008-06-12 12:14:26 +0000
commit10342e1cf5907fdd3f9d2276d3ecd90bac1856f8 (patch)
tree62d1c513c5f535786cae53dd079bd956ca5c2dab
parent9bc10fc85c9ec0cca1aa4e7faa59cee45a4deea0 (diff)
made reduce not retain head
-rw-r--r--src/boot.clj15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/boot.clj b/src/boot.clj
index 410a9cf9..589bb177 100644
--- a/src/boot.clj
+++ b/src/boot.clj
@@ -443,16 +443,17 @@
(let [s (seq coll)]
(if s
(if (instance? clojure.lang.IReduce s)
- (. s (reduce f))
+ (. #^clojure.lang.IReduce s (reduce f))
(reduce f (first s) (rest s)))
(f))))
([f val coll]
- (let [s (seq coll)]
- (if s
- (if (instance? clojure.lang.IReduce s)
- (. s (reduce f val))
- (recur f (f val (first s)) (rest s)))
- val))))
+ (let [s (seq coll)]
+ (when (instance? clojure.lang.IReduce s)
+ (. #^clojure.lang.IReduce s (reduce f val)))
+ (loop [f f val val s s]
+ (if s
+ (recur f (f val (first s)) (rest s))
+ val)))))
(defn reverse
"Returns a seq of the items in coll in reverse order. Not lazy."