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