(引用)を理解した後、どのようにしてステートメントを実行させることができるのか興味があります。私の最初の考えは
(defvar x '(+ 2 21))
`(,@x)
(+ 2 21)
しかし、それは、、またはの内容に評価されるだけですx
。リストに配置されたコードをどのように実行しますか?
(引用)を理解した後、どのようにしてステートメントを実行させることができるのか興味があります。私の最初の考えは
(defvar x '(+ 2 21))
`(,@x)
(+ 2 21)
しかし、それは、、またはの内容に評価されるだけですx
。リストに配置されたコードをどのように実行しますか?
(eval '(+ 2 21))
@クリスチャン・ロモ:
バックティックの例: 引数をフォームにスプライスできるため、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))
あなたの好奇心を満たすことを願っています!
http://lisperati.com/で面白い Lisp チュートリアルを見てみましょう。Common Lisp と Emacs Lisp のバージョンがあり、quasiquote とマクロの使用を示しています。