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