欢迎!请查看关于页面,以了解有关此工作的一些更多信息。
在 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。