implement optimized extremes protocols and fastempty for IPersistentVector rather than PersistentVector
This commit is contained in:
parent
d8473993c4
commit
39a3755b49
1 changed files with 5 additions and 5 deletions
|
|
@ -457,15 +457,15 @@
|
||||||
(append (butlast l) (afn (last l))))
|
(append (butlast l) (afn (last l))))
|
||||||
|
|
||||||
#+clj
|
#+clj
|
||||||
(defn vec-count [^clojure.lang.PersistentVector v]
|
(defn vec-count [^clojure.lang.IPersistentVector v]
|
||||||
(.count v))
|
(.length v))
|
||||||
|
|
||||||
#+cljs
|
#+cljs
|
||||||
(defn vec-count [v]
|
(defn vec-count [v]
|
||||||
(count v))
|
(count v))
|
||||||
|
|
||||||
(extend-protocol UpdateExtremes
|
(extend-protocol UpdateExtremes
|
||||||
#+clj clojure.lang.PersistentVector #+cljs cljs.core/PersistentVector
|
#+clj clojure.lang.IPersistentVector #+cljs cljs.core/PersistentVector
|
||||||
(update-first [v afn]
|
(update-first [v afn]
|
||||||
(let [val (get v 0)]
|
(let [val (get v 0)]
|
||||||
(assoc v 0 (afn val))
|
(assoc v 0 (afn val))
|
||||||
|
|
@ -485,7 +485,7 @@
|
||||||
))
|
))
|
||||||
|
|
||||||
(extend-protocol GetExtremes
|
(extend-protocol GetExtremes
|
||||||
#+clj clojure.lang.PersistentVector #+cljs cljs.core/PersistentVector
|
#+clj clojure.lang.IPersistentVector #+cljs cljs.core/PersistentVector
|
||||||
(get-first [v]
|
(get-first [v]
|
||||||
(get v 0))
|
(get v 0))
|
||||||
(get-last [v]
|
(get-last [v]
|
||||||
|
|
@ -499,7 +499,7 @@
|
||||||
|
|
||||||
|
|
||||||
(extend-protocol FastEmpty
|
(extend-protocol FastEmpty
|
||||||
#+clj clojure.lang.PersistentVector #+cljs cljs.core/PersistentVector
|
#+clj clojure.lang.IPersistentVector #+cljs cljs.core/PersistentVector
|
||||||
(fast-empty? [v]
|
(fast-empty? [v]
|
||||||
(= 0 (vec-count v)))
|
(= 0 (vec-count v)))
|
||||||
#+clj Object #+cljs default
|
#+clj Object #+cljs default
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue