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 に答える