#(defvar *test*
'(("aaa" . "bbb")
("ccc" . "ddd")))
(defmacro build-toolbar (val)
`(progn
,@(loop for i in val collect
`(print ,(car i)))))
#として上手く動かないのは、loopに渡ってるvalが、(quote val)だからかなー
#(defmacro build-toolbar (val)
`(progn
,@(loop for i in (eval val) collect
`(print ,(car i)))))
#とかquoteはずすのにeval使うとかですかねー
#いや、これだと変数がスペシャルじゃないと駄目か
#(progn
(print "aaa")
(print "ccc"))
#こうしたいなら、普通に
#(defun build-toolbar-fun (val)
(loop :for (i . _) :in val :do (print i)))
#じゃなかろうか。
#マクロにするとしても
#(defmacro build-toolbar% (val)
`(loop :for (i . _) :in ,val :do (print i)))
#ですよね、多分
#(defmacro build-toolbar% (val)
(let ((i (gensym)))
`(loop :for (,i . _) :in ,val :do (print ,i))))
#か
#割と定石から外れるとややこしく感じる