引用之间的差异,列表使用时相等

时间:2016-12-21 07:09:39

标签: common-lisp

我需要知道引用和列表之间的区别。例如:

cl-prompt> (equal (first (list * 1 2)) *)
T

cl-prompt> (equal (first '(* 1 2)) *)
NIL

我无法解决问题所在。

1 个答案:

答案 0 :(得分:5)

当用作变量*时,指的是打印到repl的最后结果。

CL-USER> (+ 4 4)
8 
CL-USER> *
8

在第一个中,两个星号都是不带引号的,因此它们被视为变量而不是符号(它们的值是您在该行之前评估的任何值)。它们是同一个变量,当然EQUAL

CL-USER> (list * 1 2)
(8 1 2)

在第二个中,第一个星号是带引号的符号,而第二个是带有值T的变量。符号*不是EQUALT,因此返回NIL

CL-USER> '(* 1 2)
(* 1 2)