在lisp中'((1 2)(3 4))和'('(1 2)'(3 4))之间的区别是什么?

hit*_*ish 2 lisp common-lisp

的长度

(length (car '('(0)'(1 2 3)'(6 7))))
Run Code Online (Sandbox Code Playgroud)

正在展示2同时

(length (car '((0)(1 2 3)(6 7))))
Run Code Online (Sandbox Code Playgroud)

正确显示1.那么第一个表达式实际代表什么?

Bar*_*mar 7

引号字符'是读者宏.'anything扩展到(quote anything).所以第一个表达式是:

(length (car (quote ((quote (0))
                     (quote (1 2 3))
                     (quote (6 7)))
Run Code Online (Sandbox Code Playgroud)

第一个quote导致参数按字面处理.这意味着它quote内部的表达式只是恰好以符号开头的列表quote.

因此该列表的CAR是子列表(quote (0)).它包含2个元素:符号quote和列表(0).