在Lisp中,表单和文件之间的关系是什么?

Elf*_*erg 4 lisp clojure common-lisp

我对理解Lisp有一点小问题.根据Common Lisp标准,表单是要评估的原子或列表.这似乎很容易.

在现实世界中,我们目前将程序存储在文件中.SBCL,Clojure等都具有可以评估的文件的概念.

这是怎么理解的?最终处理的文件最终就像要评估的单个表单一样,它是一个表单集合吗?出于某种原因,这让我很困惑.

use*_*lpa 11

根据CLHS:

load sequentially executes each form it encounters in the file
named by filespec
Run Code Online (Sandbox Code Playgroud)

这意味着文件是一系列表单.


Xac*_*ach 6

文件是存储表单的位置.打开文件(带OPEN或WITH-OPEN-FILE)提供了一个流,该READ函数可以将流中的表单读入可以评估或编译的对象中.

在Common Lisp中,重要的是要意识到程序的语义是在读取产生的对象上定义的,而不是文件中存储的文本.

http://l1sp.org/cl/3.2.3可能有助于从编译角度理解它.

http://l1sp.org/cl/24.1.1谈论负载.