Details
-
Type:
Enhancement
-
Status:
Closed
-
Priority:
Minor
-
Resolution: Completed
-
Affects Version/s: None
-
Fix Version/s: Release 1.4
-
Component/s: None
-
Labels:None
-
Patch:Code and Test
-
Approval:Ok
Description
Skip the intermediate sequence step when you know the result you want is a vector, i.e.
(defn mapv
([f coll]
(-> (reduce (fn [v o] (conj! v (f o))) (transient []) coll)
persistent!)))
(defn filterv
[pred coll]
(when-let [s (seq coll)]
(-> (reduce (fn [v o] (if (pred o) (conj! v o) v))
(transient [])
coll)
persistent!)))
There's no perf benefit for other arities of map, so for those just define in terms of (into [] (map ...))
Why when-let in filterv? Not returning a vector then. You don't even use s.