评论人:jafingerhut
我昨天偶然发现了工单 CLJ-17。它的讨论线程显示,关于验证构造关键字和符号内容的话题之前已经出现过。当时编写了一个补丁,修改了“symbol”和“keyword”这两个函数,使得符号/关键字按现在的构造方式构建,然后使用 clojure.lang.RT/readString 方法在字符串参数上进行了双检查,以确保可读性。如果 intern 和 readString 方法返回不同的符号(或者如果 readString 抛出异常),则会抛出一个异常。
Rich 担心这种运行时的开销会太高,并询问是否有人知道更快的方式来完成这项工作。Chas Emerick 提出了使用类似 Common Lisp 的 #|symbol with whitespace| 语法,并对引号不必要的常见情况进行了一些检查。Rich 对引用任意符号的想法持开放态度,但是这是一个不同的工单。
我并不确定自那时以来是否有人创建了用于引入任意符号引用的工单,但是我可能错过了。这个工单可能成为那个工单,但是其描述需要大幅编辑,并且需要在不同地方的 Clojure 中进行代码更改。