目前 LVar 对象打印与符号相同;它们应该打印为不可读形式,或者以读者可以将其读回并获取 LVar 的方式打印。
但是,(read-string (pr-str lv)) 与 lv 不相等,因为 .equals 的实现依赖于它们的字符串 :name 对象是相同的?- 如果一个 LVar 是由使用 str 的 lvar 函数创建的,而另一个是使用 String/intern 的 read-string 创建的,则不会相同。
可以说 LVar 在通过字符串发送后无法进行比较似乎是合理的,但这很棘手,不愉快。我们可以转而定义 LVar 使用 = 而不是 identical? 与其名称进行比较,但 David 对该更改的性能影响表示担忧。