summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/clj/clojure/core.clj15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj
index 6e8ed1bb..ca000810 100644
--- a/src/clj/clojure/core.clj
+++ b/src/clj/clojure/core.clj
@@ -4360,3 +4360,18 @@
"Returns the value mapped to key, nil if key not present."
[#^clojure.lang.IMutableAssociative coll key]
(.valAt coll key))
+
+;redef into with batch support
+(defn into
+ "Returns a new coll consisting of to-coll with all of the items of
+ from-coll conjoined."
+ [to from]
+ (if (instance? clojure.lang.IEditableCollection to)
+ (#(loop [ret (mutable to) items (seq from)]
+ (if items
+ (recur (conj! ret (first items)) (next items))
+ (immutable! ret))))
+ (#(loop [ret to items (seq from)]
+ (if items
+ (recur (conj ret (first items)) (next items))
+ ret)))))