Little Schemer atom vs (quote atom)

yro*_*roc 2 lisp scheme

我刚刚开始阅读The Little Schemer。它从几个问题开始,询问给定的表达式是否是一个原子。这很简单,但很有趣,第一个问题让我有点失望。它问:

这是一个原子是真的吗?
  原子1

1 (引用原子)'原子

让我失望的是脚注参考。他们问原子是否是原子,但不知何故他们说原子真的是(引用原子)“原子”?我只是不明白。

Nat*_*hes 5

这里发生的事情是弗里德曼试图避免立即让读者陷入报价阅读器宏的技术细节,因此他提供了非常简单的示例,但当按原样输入到 REPL 中时,这些示例实际上不起作用。在某些时候,有人认为他们应该提供工作代码,但他们不想破坏原始文本,因此他们将代码添加为脚注。

序言说:

此外,您可能需要稍微修改程序。通常,材料只需要进行少量更改。框架注释中提供了有关如何尝试书中程序的建议。以“S:”开头的框架注释涉及Scheme,以“L:”开头的框架注释涉及Common Lisp。

Atom 只是意味着任何不是列表的东西。当您完成这些练习时,您需要能够测试列表的一个元素以查看它是否是另一个列表。他们正在为非列表事物引入一个术语。

还要注意引用是由读者处理的,阅读和评估表达式的过程会消耗引用,所以:

(quote atom) 
Run Code Online (Sandbox Code Playgroud)

评估为

atom
Run Code Online (Sandbox Code Playgroud)