小Schemer原子vs(引用原子)

时间:2018-12-16 02:02:17

标签: scheme lisp

我刚刚开始阅读小计划者。它以几个问题开始,询问给定的表达式是否为原子。这很简单,但有趣的是,第一个问题让我有些不安。它要求:

  

这真的是原子吗?
原子 1

     

1 (引用原子)’atom

使我烦恼的是脚注参考。他们在问 atom 是一个原子,但是然后又以某种方式说 atom (引用原子) '原子?我就是不明白。

2 个答案:

答案 0 :(得分:4)

这是怎么回事,Friedman试图避免使读者立即陷入报价阅读器宏的技术难题,因此他提供了一些非常简单的示例,但当按原样键入REPL时,这些示例实际上不起作用。在某些时候,有人认为他们应该提供有效的代码,但他们不想浪费原始文本,因此他们将代码添加为脚注。

序言中说:

  

此外,您可能需要稍微修改程序。通常,该材料仅需要少量更改。框架注释中提供了有关如何尝试使用本书中程序的建议。带有“ S:”关注方案的框架注释,带有“ L:”关注的框架注释涉及Common Lisp。

Atom仅表示不属于列表的任何内容。在练习过程中,您将需要测试列表中的一个元素,以查看它是否为另一个列表。他们正在为非清单事物引入术语。

还请注意报价是由读者处理的,读取和评估表达式的过程会消耗报价,所以:

(quote atom) 

评估为

atom

答案 1 :(得分:1)

Cf。 CLISP REPL中的以下交互:

[1]> 'atom
ATOM

ATOM是文本所引用的实体;脚注所指的是'atom

引用的数据处理是有关Lisp语法的弱点之一。我们看到的是评估(ATOM)还是代码('atom)的结果,一直是一个困惑。毕竟,代码是Lisp中的数据,因此当我们希望区分时,它会使区分变得模糊。