评论者:favila
我看另一个歧义来源是不清晰关键词的第一个冒号是否是关键词(因此同时也是符号)的第一个字符,还是它是特殊的,规范实际上描述了从第二个字符开始的情况。这很重要,因为关键词的规范(在 edn 和读取器规范中)是以与符号的差异为条件的给出的。我认为许多奇怪的边缘情况关键词(包括 :1 与 :a/1 的合法性)都源于这种歧义,不同的票据/补丁似乎选择了一个或另一个潜在假设。参见 [链接](http://dev.clojure.org/jira/browse/CLJS-677?focusedCommentId=35025&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-35025) 的更多示例。
我们可以为关键词和符号使用标签字面量来创建或打印这些形式,当它们不可读时,简化它们的字面量读取器规范。例如,而不是生成复杂的解析规则来确保 clojure.core// 或 :1 是合法的,可以简单地做出字面量形式,并让用户在遇到这些边缘情况时写入类似 #sym("clojure.core" "/") 或 #kyw "1"(并让打印机打印这些)。