diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-06-12 12:14:26 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-06-12 12:14:26 +0000 |
commit | 10342e1cf5907fdd3f9d2276d3ecd90bac1856f8 (patch) | |
tree | 62d1c513c5f535786cae53dd079bd956ca5c2dab | |
parent | 9bc10fc85c9ec0cca1aa4e7faa59cee45a4deea0 (diff) |
made reduce not retain head
-rw-r--r-- | src/boot.clj | 15 |
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." |