Common Lisp HyperSpec:符合规范的实现中的未绑定符号处理

Common Lisp HyperSpec: unbound symbol handling in conforming implementations

这是一个关于符合 ANSI Lisp 规范的实现的非常技术性的问题:

Section 2.3.4中,它表示一个令牌被读取为当前包中不可用的符号,作为新符号被埋葬在当前包中。

Section 3.1.2.1中说如果一个符号没有绑定,就会报错。

REPL 迭代之间未绑定的符号会发生什么情况? 符合规范的实现会从当前包中删除未绑定的符号,还是会保留实习符号直到 REPL 占用所有可用内存?

一旦你 intern 一个符号,它就会保持 intern 状态,直到你明确地取消它。如果您键入一个驻留符号的名称,则会返回相同的符号。

reader不关心符号是否绑定。只有当您尝试评估符号时,这才变得相关。但是符号可以在不被评估的情况下使用,例如作为引用数据的一部分,或者当程序调用 READ 本身时。