欢迎!请参阅 关于 页面以获取更多关于如何使用此信息的说明。
Clojure 读取器页面 https://clojure.org/reader 说明,符号(和关键字)不能以数字开头,LispReader(和EdnReader)中使用的正则表达式也有这个意图。CLJ-1252 通过修复损坏的读取器正则表达式以匹配规范来解决此问题。然而,这破坏了某些现有代码,因此我们撤销了更改。这里仍然存在不一致的地方,此票据旨在决定如何解决这个问题。
我假设我们实际上决定关键字如 :5 是可以读取的。如果是这样,我们应该修改正则表达式以更准确地捕捉这个意图 —— 现在它通过回溯意外地允许这些(代码)。次要问题是 Clojure 和 EDN 读取器规范是否也应明确允许这些作为有效项。我的偏好是将读取器和规范匹配,因此我将支持放宽读取器规范。
相关问题:CLJ-1527
评论由:bronsa 提出
关于像 :1/1 或 :1/a 这样的关键字怎么办?Clojure 目前接受后者但不接受前者。
评论由:favila 提出
关于此问题的更多讨论(以及符号/关键字解析总体)可以在 cljs.reader 的 CLJS-677 上下文中找到。
评论者:jafingerhut
Francis,您能否再次核实一下工单编号?您提到的(CLJS-667)似乎没有关于这个问题的讨论。
非常抱歉,应该是 CLJS-677。(原始帖子也已更正。)
从 #clojure 的讨论中可以看出,虽然目前不允许 :foo/1,但 ::1 是允许的。