仮定しましょう:
(defmacro testing (&optional var)
`(list 'this 'is
,@(when (consp var) `('a 'list))))
呼び出されたとき:
>(testing 2)
(THIS IS)
>(testing (list 1 2))
(THIS IS A LIST)
それが私が欲しかったものです。しかし今、リストであるパラメーターを渡すと:
>(defparameter bla (list 1 2 3))
BLA
>(testing bla)
(THIS IS)
これは、マクロが(consp bla)bla がリストではなくシンボルである場所をチェックするためだと思いますか? これを防ぐにはどうすればよいですか?
ありがとう