2024 年 Clojure 状况调查!中分享您的想法。

欢迎!请查看关于页面以获取更多关于如何使用本网站的信息。

0
Clojure

例如:

Clojure 1.3.0
user=> (require '(link: clojure.zip :as z))
nil
user=> (-> (z/seq-zip (list 1)) z/down z/remove)
NullPointerException clojure.core/with-meta (core.clj:211)

可能 seq-zip 的 make-node 函数应该是:

(fn (link: 节点 子节点)(with-meta (or 子节点 ()) (meta 节点)))

4 个答案

0

评论者:glchapman

Zipper 的文档字符串可能应该更新,以指示子节点参数可以设置为 nil。

0

评论者:chbrown

4 年后,我也遇到了这个问题。

有没有解决方案?也就是说,是否有一种从单元素分支中删除元素的方法?

0

评论者:alexmiller

很高兴看到补丁(尽管也需要填充一些测试)。

一个方案可能如下所示:

(-> (z/seq-zip (list 1)) (z/edit #(drop 1 %)) z/node)

或者,您可以使用像 hara.zip 这样的其他 zipper 库,它没有 remove 方法,但可以与 delete-right 一起使用

(-> (z/seq-zip (list 1)) z/down z/delete-right z/up z/node)

0
参考资料:https://clojure.atlassian.net/browse/CLJ-941(由 glchapman 发表)
...