clojurescript - Clojure newbie struggling with protocols -
clojurescript - Clojure newbie struggling with protocols - i attempting build out concept of cursor in clojurescript, backed atom. cursor recursive zipper mechanism editing immutable nested associated datastructure. i newbie @ clojure, can help me spot errors? (defprotocol cursor (refine [this path]) (set [this value]) (value [this])) (defn- build-cursor* [state-atom paths] (reify cursor (set [this value] (swap! state-atom (assoc-in @state-atom paths value))) (refine [this path] (build-cursor* state-atom (conj paths path))) (value [this] (get-in @state-atom paths)))) (defn build-cursor [state-atom] (build-cursor* state-atom [])) (comment (def s (atom {:a 42})) (def c (build-cursor s)) (assert (= (value c) {:a 42})) (set c {:a 43}) ;; warning: wrong number of args (2) passed quiescent-json-editor.core/set @ line 1 <cljs repl> (assert (= (value c) {:a 43})) (def ca (refine c :a)) ;; warning: wrong number of args (2) passed quiescent-js