我将列表名称作为输入使用单引号('),但在执行一些操作后,我想实际评估它而不是将其视为原子。
例如,为了简单起见,我有以下列表:
(setf LT '(A B C))
我有一个名为SEP
的函数。要运行该函数,我必须将其作为(SEP 'LT)
运行。正如您所看到的,LISP会将LT
解释为原子而不是将其评估为列表,这不是我想要的。
基本上,我希望(SEP 'LT)
以某种方式真正成为(SEP '(A B C))
。
无法更改输入格式。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:2)
如果LT
是使用defvar
定义的顶级变量,那么您可以使用symbol-value
获取其值:
* (symbol-value 'lt)
(A B C)
* (defun sep (name)
(assert (symbolp name))
(let ((value (symbol-value name)))
...