8

(引用)を理解した後、どのようにしてステートメントを実行させることができるのか興味があります。私の最初の考えは

(defvar x '(+ 2 21))
`(,@x)

(+ 2 21)しかし、それは、、またはの内容に評価されるだけですx。リストに配置されたコードをどのように実行しますか?

4

3 に答える 3

17

(eval '(+ 2 21))

于 2008-10-06T00:58:07.367 に答える
0

@クリスチャン・ロモ:

バックティックの例: 引数をフォームにスプライスできるため、eval とバックティックを使用して適用を実装できます。世界で最も効率的なものにはなりませんが、

(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))

あなたの好奇心を満たすことを願っています!

于 2008-10-06T20:07:12.710 に答える
0

http://lisperati.com/で面白い Lisp チュートリアルを見てみましょう。Common Lisp と Emacs Lisp のバージョンがあり、quasiquote とマクロの使用を示しています。

于 2008-11-17T12:29:25.300 に答える