Experimenting in the REPL(体验 REPL)

    为了测试 REPL,需要一个可以被读取、求值和打印的 Lisp 表达式。最简单类型的 Lisp 表达式是一个数。在 Lisp 提示符下,可以输入 10 接着敲回车键,然后看到类似下面的东西:

    第一个 是你输入的。Lisp 读取器,即 REPL 中的 R,读取文本 “10” 并创建一个代表数字 10 的 Lisp 对象。这个对象是一个自求值(self-evaluating)对象,也就是说当把它送给求值器,即 REPL 中的 E 以后,它将对其自身求值。这个值随后被送到打印器里,打印出只有 10 的那行来。整个过程看起来似乎是费了九牛二虎之力却回到了原点,但如果你给了 Lisp 更有意义的信息,那么事情就变得有意思一些了。比如说,可以在 Lisp 提示符下输入 (+ 2 3)

      小括号里的东西构成了一个列表,上述列表包括三个元素:符号 +,以及数字 2 和 3。一般来说,Lisp 对列表求值的时候会将第一个元素视为一个函数的名字,而其他元素作为即将求值的表达式则形成了该函数的实参。在本例里,符号 + 是加法函数的名字。2 和 3 对自身求值后被传递给加法函数,从而返回了 5。返回值 5 被传递给打印器从而得以输出。Lisp 也可能以其他方式对列表求值,但我们现在还没必要讨论它。但从 Hello World 开始。