LISP:力量评估

时间:2013-04-12 02:59:54

标签: list lisp quote

我将列表名称作为输入使用单引号('),但在执行一些操作后,我想实际评估它而不是将其视为原子。

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

(setf LT '(A B C))

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

基本上,我希望(SEP 'LT)以某种方式真正成为(SEP '(A B C))

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

1 个答案:

答案 0 :(得分:2)

如果LT是使用defvar定义的顶级变量,那么您可以使用symbol-value获取其值:

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

* (defun sep (name)
    (assert (symbolp name))
    (let ((value (symbol-value name)))
      ...
相关问题