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

欢迎!请在关于页面查看更多有关如何使用本站的信息。

+40
Clojure
已关闭

示例

user=> (set! *print-meta* true)
true
user=> (clojure.walk/postwalk identity ^:foo ())
()
user=> (clojure.walk/postwalk identity (with-meta (list 1 2 3) {:foo true}))
(1 2 3)

查看JIRA问题:https://clojure.atlassian.net/browse/CLJ-2568
该JIRA问题已存在一段时间。创建此询问问题是为了让它积累社区的支持票。如果您关心,请投上一票!

已注明关闭: 发布在 1.12.0-alpha8

2 个回答

+1

看到实际例子非常有帮助,因为我们探讨各种权衡时,没有更多关于你遇到的问题的信息,理解用例是困难的。

一个例子是在edamame中,我在一个函数字面量的体中postwalk。由于在列表/序列(conses不是列表,但作为语法引号的结果存在)中行号会被丢弃,我需要实现自己的。

https://github.com/borkdude/edamame/blob/6ec811bee0d9a636e4e1eb87f9cf2aa1dd5d8518/src/edamame/impl/read_fn.cljc#L4-L24
我认为所有使用clojure.walk进行的严肃代码处理都受到元数据问题的影响。它丢失了^:tag、位置等信息。
0投票

Alex Miller
2020年5月31日 晚上9:54

需要考虑的是现有程序在walk过程中是否会修改coll元数据,这可能会被此更改破坏。

这是一个问题,有没有答案?

已更新至JIRA问题
...