我是 clojure 的新手,我正在使用 clojure.zip,但无法弄清楚如何使用其中的编辑功能。如果有人能给我一个关于它如何工作的工作示例,那将非常有帮助。
比如说我有一棵二叉树
45
10 57
我将如何编辑值 57 并将其更改为 75
我是 clojure 的新手,我正在使用 clojure.zip,但无法弄清楚如何使用其中的编辑功能。如果有人能给我一个关于它如何工作的工作示例,那将非常有帮助。
比如说我有一棵二叉树
45
10 57
我将如何编辑值 57 并将其更改为 75
假设一个嵌套向量的结构,其中第一个元素是值,第二个是左孩子,第三个是右孩子,这将起作用:
(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]]