解析Common Lisp列表中的符号

Pau*_*han 3 lisp evaluation symbols common-lisp

假设我有一个功能

CL-USER> (defun trimmer (seq) "This trims seq and returns a list"
      (cdr 
         (butlast seq)))
TRIMMER
CL-USER> (trimmer '(1 2 3 VAR1 VAR2))
(2 3 VAR1)
CL-USER> 
Run Code Online (Sandbox Code Playgroud)

请注意,由于QUOTE,VAR1和VAR2未解析.假设我想将符号VAR1和VAR2解析为它们的值 - 是否有标准函数来执行此操作?

Sva*_*nte 6

不要quote用于创建包含变量的列表; list改为使用:

CL-USER> (trimmer (list 1 2 3 var1 var2))
(2 3 value-of-var1)
Run Code Online (Sandbox Code Playgroud)

(value-of-var1价值在哪里var1).

Quote只能阻止评估其论点.如果它的参数恰好是列表文字,则返回.但是,要创建不仅仅是文字的列表,请使用list.您可以使用反引用语法,但在这种情况下这是混淆.