2013-04-12 62 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

相關問題