以下是SICP的演习。我无法自己解决这个问题。可以帮助我理解一些吗?
将以下代码输入interpreator:
(car ''abracadabra)
它打印出'引用'。为什么呢?
答案 0 :(得分:6)
正如gimpf所说,'abracadabra =(引用abracadabra)。您可以通过在REPL中键入''abracadabra来验证这一点,这将打印(引用abracadabra)。
答案 1 :(得分:0)
因为''abracadabra真的是(引用(引用abracadabra))。在Scheme中,规则是:评估s表达式的所有部分,并将第一部分应用于其余部分。
“car”和“quote”是下面的符号。 #car和#quote是他们引用的函数。
如果你选择
(car (quote (quote abracadabra)))
并评估部件,你得到
(#car (quote abracadabra))
然后,将第一部分(汽车功能)应用于第二部分(两个符号列表)。
quote
你只得到符号“引用”。
请记住,要弄清楚Scheme中会发生什么,请评估部件并将第一部分应用到其余部分。如果你评价报价,你会得到里面的东西。唯一令人困惑的部分是一些原语(数字和字符串)对自己进行评估。