質問

理解(引用)した後、ステートメントを実行させる方法について興味があります。私の最初の考えは

でした
(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のバージョンがあり、準引用符とマクロの使用を示しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top