From 39a3755b49e14818dd88aae7563fd7a717340f02 Mon Sep 17 00:00:00 2001 From: Nathan Marz Date: Wed, 1 Jun 2016 12:33:10 -0400 Subject: [PATCH] implement optimized extremes protocols and fastempty for IPersistentVector rather than PersistentVector --- src/clj/com/rpl/specter/impl.cljx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/clj/com/rpl/specter/impl.cljx b/src/clj/com/rpl/specter/impl.cljx index 7ec5195..9ff9fcf 100644 --- a/src/clj/com/rpl/specter/impl.cljx +++ b/src/clj/com/rpl/specter/impl.cljx @@ -457,15 +457,15 @@ (append (butlast l) (afn (last l)))) #+clj -(defn vec-count [^clojure.lang.PersistentVector v] - (.count v)) +(defn vec-count [^clojure.lang.IPersistentVector v] + (.length v)) #+cljs (defn vec-count [v] (count v)) (extend-protocol UpdateExtremes - #+clj clojure.lang.PersistentVector #+cljs cljs.core/PersistentVector + #+clj clojure.lang.IPersistentVector #+cljs cljs.core/PersistentVector (update-first [v afn] (let [val (get v 0)] (assoc v 0 (afn val)) @@ -485,7 +485,7 @@ )) (extend-protocol GetExtremes - #+clj clojure.lang.PersistentVector #+cljs cljs.core/PersistentVector + #+clj clojure.lang.IPersistentVector #+cljs cljs.core/PersistentVector (get-first [v] (get v 0)) (get-last [v] @@ -499,7 +499,7 @@ (extend-protocol FastEmpty - #+clj clojure.lang.PersistentVector #+cljs cljs.core/PersistentVector + #+clj clojure.lang.IPersistentVector #+cljs cljs.core/PersistentVector (fast-empty? [v] (= 0 (vec-count v))) #+clj Object #+cljs default