質問
理解(引用)した後、ステートメントを実行させる方法について興味があります。私の最初の考えは
でした(defvar x '(+ 2 21))
`(,@x)
ただし、評価されるのは(+ 2 21)
、または x
のコンテンツです。リストに配置されたコードをどのように実行しますか?
解決
(eval '(+ 2 21))
他のヒント
@ Christiá n Romo:
バックティックの例:引数をフォームにスプライスできるため、evalとbacktickを使用してapplyを実装できます。世界で最も効率的なものになるわけではありませんが、:
(eval `(and ,@(loop for x from 1 upto 4 collect `(evenp ,x))))
は同等です
(eval '(and (evenp 1) (evenp 2) (evenp 3) (evenp 4)))
ちなみに、これは(はるかに効率的)と同じ結果になります
(every 'evenp '(1 2 3 4))
好奇心を満たす希望!
http://lisperati.com/ の面白いLispチュートリアルをご覧ください。 Common LispとEmacs Lispのバージョンがあり、準引用符とマクロの使用を示しています。
所属していません StackOverflow