lisp - Common Lisp 超规范 : unbound symbol handling in conforming implementations

标签 lisp common-lisp hyperspec

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

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

Section 3.1.2.1 ,它表示如果符号未绑定(bind),则会给出错误。

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

最佳答案

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

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

关于lisp - Common Lisp 超规范 : unbound symbol handling in conforming implementations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61435649/

相关文章:

lisp - 阅读和理解 Common Lisp (HyperSpec) 文档

lisp - Racket 幻灯片 2Htdp Pict

条件的 LISP 特殊形式

windows - 如何使用 SBCL 安装 lispbuilder-sdl?

lambda - Lisp 方案 : let to lambda

emacs - 使 Emacs/Slime/Quicklisp/SBCL 在 Windows 中工作

oop - CLOS:方法与任意函数的组合

common-lisp - 如何编写一个用参数调用函数的函数?