2013-04-12 54 views
0

我正在用一个单引号(')作为输入列表名称,但是在做了一些操作之后,我想实际评估它而不是将它当作原子对待。LISP:部队评估

因此,例如,只是为了简单起见,我有以下列表:

(setf LT '(A B C)) 

我有一个名为SEP功能。要运行该功能,我必须将其作为(SEP 'LT)运行。正如你所看到的,LISP将把LT解释为一个原子,而不是将它评估为一个列表,这不是我想要的。

所以基本上,我想(SEP 'LT)真的变得(SEP '(A B C))莫名其妙。

输入格式无法更改。任何帮助,将不胜感激。谢谢!

回答

2

如果LT是一个顶级变量,与defvar定义,那么你可以得到它与symbol-value值这样:

* (symbol-value 'lt) 
(A B C) 

* (defun sep (name) 
    (assert (symbolp name)) 
    (let ((value (symbol-value name))) 
     ... 
+1

谢谢!这正是我所期待的。 (顺便说一句,我认为它是'symbolp'而不是'symbol-p') – pauliwago

+0

'(assert(symbolp name))' - >'(check-type name symbol)'。 – Kaz

相关问题