的长度
(length (car '('(0)'(1 2 3)'(6 7))))
正在显示 2 而相同
(length (car '((0)(1 2 3)(6 7))))
正确显示 1. 那么第一个表达式实际上代表什么?
的长度
(length (car '('(0)'(1 2 3)'(6 7))))
正在显示 2 而相同
(length (car '((0)(1 2 3)(6 7))))
正确显示 1. 那么第一个表达式实际上代表什么?
引号字符'
是一个阅读器宏。'anything
扩展为(quote anything)
. 所以第一个表达式是以下的简写:
(length (car (quote ((quote (0))
(quote (1 2 3))
(quote (6 7)))
第一个quote
导致参数被逐字处理。这意味着其中的quote
表达式只是恰好以符号开头的列表quote
。
所以该列表的 CAR 是 sub-list (quote (0))
。它包含 2 个元素:符号quote
和列表(0)
。
CL-USER 8 > '((0)(1 2 3)(6 7))
((0)
(1 2 3)
(6 7))
CL-USER 9 > '('(0)'(1 2 3)'(6 7))
((QUOTE (0))
(QUOTE (1 2 3))
(QUOTE (6 7)))