请在2024 年 Clojure 状态调查中分享您的看法!

欢迎!请参阅关于页面获取有关如何使用此功能的一些更多信息。

0
语法和读取器

https://clojure.org/reader的读取器页面中指出,符号(以及关键字)不能以数字开头,LispReader(和EdnReader)中使用的正则表达式也有这个意图。CLJ-1252 通过修复破坏的读取器正则表达式来匹配该规范解决了这个问题。然而,这破坏了一些现有的代码,因此我们撤销了更改。此处仍然存在脱节,此问题单旨在决定我们如何采取替代方案。

我假设我们实际上决定关键词如:5是可以读取的。如果是这样,我们应该更改正则表达式以更准确地捕获该意图 - 目前它正因为回溯而意外地允许这些。一个次要问题是Clojure和EDN读取器规范是否也应明确允许这些作为有效项。我的偏好是让读取器和规范相匹配,因此我会积极游说放宽读取器规范。

相关问题单:CLJ-1527

6 个回答

0

评论由:bronsa 提出

关于像:1/1 或:1/a 这样的关键字,Clojure 目前接受后者,但不接受前者。

0

评论由:favila 提出

有关此问题(以及符号/关键字解析)的更多讨论(以及 cljs.reader 上下文中的符号/关键字解析)在 CLJS-677 中进行。

0

评论者:jafingerhut

Francis,你能再次确认这个工单号码吗?你提到的(CLJS-667)似乎没有讨论过这个问题。

0

评论由:favila 提出

非常抱歉,应该是 CLJS-677。(原帖也已更正。)

0

评论由:bronsa 提出

从 #clojure 中的讨论中可以看出,虽然 :foo/1 目前不被允许,但 ::1 是可以的。

0
参考:https://clojure.atlassian.net/browse/CLJ-1286(由 alexmiller 报告)
...