我需要知道引用和列表之间的区别。例如:
cl-prompt> (equal (first (list * 1 2)) *)
T
cl-prompt> (equal (first '(* 1 2)) *)
NIL
我无法解决问题所在。
答案 0 :(得分:5)
当用作变量*
时,指的是打印到repl的最后结果。
CL-USER> (+ 4 4)
8
CL-USER> *
8
在第一个中,两个星号都是不带引号的,因此它们被视为变量而不是符号(它们的值是您在该行之前评估的任何值)。它们是同一个变量,当然EQUAL
。
CL-USER> (list * 1 2)
(8 1 2)
在第二个中,第一个星号是带引号的符号,而第二个是带有值T
的变量。符号*
不是EQUAL
到T
,因此返回NIL
CL-USER> '(* 1 2)
(* 1 2)