0

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

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

(setf LT '(A B C))

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

所以本质上,我想(SEP 'LT)真正成为(SEP '(A B C))某种方式。

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

4

1 回答 1

2

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

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

* (defun sep (name)
    (assert (symbolp name))
    (let ((value (symbol-value name)))
      ...
于 2013-04-12T03:02:30.323 回答