以下是SICP的演习。我无法自己解决这个问题。可以帮助我理解一些吗?

将以下代码输入interpreator:

(car ''abracadabra)

它打印出'引用'。为什么呢?

有帮助吗?

解决方案

正如gimpf所说,'abracadabra =(引用abracadabra)。您可以通过在REPL中键入''abracadabra来验证这一点,这将打印(引用abracadabra)。

其他提示

因为''abracadabra真的是(引用(引用abracadabra))。在Scheme中,规则是:评估s表达式的所有部分,并将第一部分应用于其余部分。

"汽车"和“引用”是下面的符号。 #car和#quote是他们引用的函数。

如果你选择

(car (quote (quote abracadabra)))

并评估部件,你得到

(#car (quote abracadabra))

然后,将第一部分(汽车功能)应用于第二部分(两个符号列表)。

quote

你只得到符号“引用”。

请记住,要弄清楚Scheme中会发生什么,请评估部件并将第一部分应用到其余部分。如果你评价报价,你会得到里面的东西。唯一令人困惑的部分是一些原语(数字和字符串)对自己进行评估。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top