如何使用clojure.zip?

时间:2016-05-27 13:33:47

标签: clojure clojurescript

考虑以下代码

(def v (z/vector-zip [1 [2 [3 4]]]))

其中z指的是clojure.zip。

现在,我如何从v创建矢量

[1 [2 [3 [4 5]]]]

使用API​​中的函数来实现clojure.zip?所以从

开始
(-> 
 v 
 ...

1 个答案:

答案 0 :(得分:3)

只需使用函数edit

(defn edit
  "Replaces the node at this loc with the value of (f node args)"
  [loc f & args]
    (replace loc (apply f (node loc) args)))

实施例

(-> v
    (z/down)
    (z/right)
    (z/down)
    (z/right)
    (z/down)
    (z/right)
    (z/edit #(do [% 5]))
    (z/root))

结果将是

=> [1 [2 [3 [4 5]]]]