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

Dae*_*sos 3 common-lisp

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

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

cl-prompt> (equal (first '(* 1 2)) *)
NIL
Run Code Online (Sandbox Code Playgroud)

我不明白这是什么问题.

jki*_*ski 5

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

CL-USER> (+ 4 4)
8 
CL-USER> *
8
Run Code Online (Sandbox Code Playgroud)

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

CL-USER> (list * 1 2)
(8 1 2)
Run Code Online (Sandbox Code Playgroud)

在第二个中,第一个星号是带引号的符号,而第二个星号是带有值的变量T.符号*是不是EQUALT,所以它返回NIL

CL-USER> '(* 1 2)
(* 1 2)
Run Code Online (Sandbox Code Playgroud)