在常见的Lisp中,我希望能够找出符号是否是宏。是否存在诸如(macrop)
之类的谓词,它可以让我检测名称/符号是否为宏?
答案 0 :(得分:5)
如果macro-function
返回非NIL,则它是一个宏。
CL-USER 1 > (defmacro foo (bar) bar)
FOO
CL-USER 2 > (macro-function 'foo)
#<anonymous interpreted function 40600108FC>
请注意,这适用于典型的全局宏。还有局部和词法宏,符号宏,...