From 187299b3d9d617752f667a2a37da4e992595f477 Mon Sep 17 00:00:00 2001 From: Nathan Marz Date: Wed, 1 Jun 2016 12:54:59 -0400 Subject: [PATCH] make non 1 or 2 count case update-last faster for vectors, change updateextremes to be specific to persistentvector --- src/clj/com/rpl/specter/impl.cljx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/clj/com/rpl/specter/impl.cljx b/src/clj/com/rpl/specter/impl.cljx index e461b1a..442e224 100644 --- a/src/clj/com/rpl/specter/impl.cljx +++ b/src/clj/com/rpl/specter/impl.cljx @@ -465,7 +465,7 @@ (count v)) (extend-protocol UpdateExtremes - #+clj clojure.lang.IPersistentVector #+cljs cljs.core/PersistentVector + #+clj clojure.lang.PersistentVector #+cljs cljs.core/PersistentVector (update-first [v afn] (let [val (nth v 0)] (assoc v 0 (afn val)) @@ -475,8 +475,9 @@ (case c 1 (let [[e] v] [(afn e)]) 2 (let [[e1 e2] v] [e1 (afn e2)]) - (conj (pop v) (afn (peek v))) - ))) + (let [i (dec c)] + (assoc v i (afn (nth v i))) + )))) #+clj Object #+cljs default (update-first [l val] (update-first-list l val))