我需要知道引用和列表之间的区别.例如:
cl-prompt> (equal (first (list * 1 2)) *)
T
cl-prompt> (equal (first '(* 1 2)) *)
NIL
Run Code Online (Sandbox Code Playgroud)
我不明白这是什么问题.
当用作变量时,*
指的是打印到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
.符号*
是不是EQUAL
对T
,所以它返回NIL
CL-USER> '(* 1 2)
(* 1 2)
Run Code Online (Sandbox Code Playgroud)