Common Lisp HyperSpec:一致实现中的未绑定符号处理

Dan*_*ith 2 lisp common-lisp hyperspec

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

第 2.3.4 节中,它表示读取为当前包中不可用的符号的令牌将作为当前包中的新符号进行埋葬。

第 3.1.2.1 节中,它表示如果符号未绑定,则会给出错误。

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

Bar*_*mar 5

一旦你驻留了一个符号,它就会一直驻留,直到你明确地取消它。如果您输入内部符号的名称,则会返回相同的符号。

读者并不关心符号是否受约束。只有当您尝试评估该符号时,这一点才有意义。但是符号可以在不被求值的情况下使用,例如作为引用数据的一部分,或者当程序调用READ自身时。