(defmacro macro-a (name &rest args)
"doc"
(declare (indent 1))
(let ((a (list "s" "o")))
(message "macro-a")
`(prog1
,@(mapcar (lambda (elm) `(my-func ',elm)) a))))
(defmacro macro-b (name &rest args)
"doc'"
(declare (indent 1))
`(macro-a ,name ,@args) ;这个调用没作用,没有被eval。
;除非写为(eval `(macro-a ,name ,@args))
`(leaf ,name ,@args)) ;leaf 却能够正常的eval展开。
;什么原因呢?
(macro-b meow :require t)
上面的代码,为什么 (leaf ,name ,@args)
求值了,而我写的 (macro-a ,name ,@args)
却没有被求值,搞不清楚哪里问题。搞不清 eager macroexpand的过程机制。求指点。