欢迎!请访问关于页面以获取有关如何工作的更多信息。
https://clojure.org/reader上的读取器页面指出,符号(和关键字)不能以数字开头,LispReader(和EdnReader)中使用的正则表达式也有此意图。CLJ-1252通过修复损坏的读取器正则表达式以匹配规范来解决此问题。但是,这破坏了一些现有代码,因此我们回滚了更改。这里仍然存在不一致,此问题报告旨在决定如何解决这个问题。
我假设我们实际上是在决定关键字(如:5)是可以读取的。如果是这样,我们应该修改正则表达式以更精确地捕获该意图 - 目前它通过回溯意外地允许这些操作。次要问题是Clojure和EDN读取器规范是否也应明确允许这些操作。我的首选方案是使读取器和规范匹配,因此我会倡导放宽读取器规范。
相关问题报告:CLJ-1527
评论人:bronsa
关于像:1/1或:1/a这样的关键字,Clojure目前接受后者但不接受前者。
评论人:favila
有关此问题(以及符号/关键字解析)和相关讨论的更多信息,请参阅CLJS-677。
评论人:jafingerhut
Francis,你能确认一下工单号吗?你提到的(CLJS-667)似乎没有这个问题的讨论。
非常抱歉,应该是 CLJS-677。(原帖也已更正。)
在 #clojure 的讨论中,我们发现虽然 :foo/1 当前不允许,但 ::1 是允许的。