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
本身时。
这是一个关于符合 ANSI Lisp 规范的实现的非常技术性的问题:
在Section 2.3.4中,它表示一个令牌被读取为当前包中不可用的符号,作为新符号被埋葬在当前包中。
在Section 3.1.2.1中说如果一个符号没有绑定,就会报错。
REPL 迭代之间未绑定的符号会发生什么情况? 符合规范的实现会从当前包中删除未绑定的符号,还是会保留实习符号直到 REPL 占用所有可用内存?
一旦你 intern 一个符号,它就会保持 intern 状态,直到你明确地取消它。如果您键入一个驻留符号的名称,则会返回相同的符号。
reader不关心符号是否绑定。只有当您尝试评估符号时,这才变得相关。但是符号可以在不被评估的情况下使用,例如作为引用数据的一部分,或者当程序调用 READ
本身时。