我是clojure的新手,我正在使用clojure.zip,并且无法弄清楚如何在其中使用编辑功能。如果有人能给我一个如何运作的实例,那将非常有帮助。
比方说,我有一个二叉树
45
10 57
如何编辑值57并将其更改为75
答案 0 :(得分:2)
假设一个嵌套向量的结构,其中第一个元素是值,第二个是左子,第三个是右子,这可以工作:
(let [btree [45 [10] [57]]
root-loc (zip/zipper vector? rest
(fn [[x _ _] children]
(vec (cons x children)))
btree)]
(-> root-loc
zip/down
zip/right
(zip/edit (fn [node]
(assoc-in node [0] 75)))
zip/root))
;=> [45 [10] [75]]