如何使用 clojure.zip 将 child 添加到树中?

How to add a child to a tree using clojure.zip?

考虑以下代码

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

其中 z 指的是 clojure.zip.

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

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

将 API 中的函数用于 clojure.zip?所以从

开始
(-> 
 v 
 ...

只需使用函数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]]]]