SICP术语:计算对象

jhe*_*dus 3 lisp scheme terminology sicp

SICP中计算对象的确切定义是什么?这是值吗?是表达吗?我不清楚,请您告诉我正确的含义并解释原因?

您能在解释中举例说明吗?

我试图通过绘制概念图来理解SICP中使用的术语(请参阅下文),但是由于无法确定该术语是指值还是表达式,我陷入了计算对象的含义?

在此处输入图片说明

在此处输入图片说明

编辑:

阅读答案后更新了概念图:

在此处输入图片说明

Jos*_*lor 5

我认为您强调的in文本中的关键:

编程语言的一个关键方面是它提供使用名称来引用计算对象的方式。我们说名称标识了一个变量,值为对象。

“计算对象”是可以作为变量值的任何东西。与简单地称为“对象”相对应的将其称为“计算对象”可能会在此处增加一些混乱,因为从上下文中很明显,计算对象(例如,一张纸)不能成为程序中的变量。不过,有些与程序无关的东西也不是计算对象。

例如,在Scheme中,变量不是计算对象;它不是计算对象。您不能将一个变量存储在另一个变量中。在某些语言中,变量或指针至少计算对象,并且可以是变量的值。

在文本的定义中,我们看到了源代码(即表达式)。计算表达式会产生可存储在变量中的计算值。例如,(+ 2 3)可以对表达式求值以生成整数2,该整数将打印为2。不过,有趣的是,在Lisp语言中(更普遍地,在谐音语言中),源代码也可以表示为值。例如,对表达式求值(list '+ 2 3)会生成一个名为的符号的列表,该符号"+"的整数值为2,该整数值为3。列表打印为(+ 2 3)

因此,我们对使用对象的位置有了一个了解,但是实际上存在哪些对象呢?这取决于语言的定义。Scheme的定义指定了某些类型的对象:

  • 数字(并且有各种类型的数字)
  • 符号
  • cons单元格(这些单元格基本上是成对的,我们使用约定从中构建列表和树)
  • 空列表
  • 布尔值true和false
  • 过程(通常称为函数)
  • 向量和数组

其他语言将提供其他类型,Scheme可能会提供比我在这里列出的更多的语言。关键是存在的对象由语言设计者决定,目的是提供足够的原始类型,以便程序员可以根据它们定义所需的内容。