在页面178上,有一个问题:
的值是多少(cons rep-car
(cons (cons rep-quote
(cons
(cons rep-a
(cons rep-b
(cons rep-c
(quote ()))))
(quote ())))
(quote ())))
,其中
rep-car is car
rep-quote is quote
rep-a is a
rep-b is b
rep-c is c
书中的答案是
(car (quote (a b c)))
但我认为答案应该是
(car ((quote ((a b c)))))
为什么我错了?
答案 0 :(得分:2)
不,书中的答案是正确的。请注意,表达式有3次出现(quote ())
,以创建3个列表。然后它将各种原子汇集到列表中。你的答案包含5个列表,而不是3个。
(quote ())
只返回一个空列表。 (cons 1 (quote ()))
将一个项目添加到空列表中以产生(1)
。
答案 1 :(得分:0)
(car ((quote ((a b c)))))
尝试运行该代码段;你会收到一条错误信息。该代码的作用是
由于第2步失败(因为'(a b c)不是函数),所以永远不会达到第3步。
从原始代码中可以清楚地看到,代码的任何部分都没有这样做。
你可能想说
(car (quote ((a b c))))
由于Alex D给出的理由,这是错误的。