如何检查符号是否为宏

时间:2019-06-02 20:04:32

标签: macros lisp common-lisp

在常见的Lisp中,我希望能够找出符号是否是宏。是否存在诸如(macrop)之类的谓词,它可以让我检测名称/符号是否为宏?

1 个答案:

答案 0 :(得分:5)

如果macro-function返回非NIL,则它是一个宏。

CL-USER 1 > (defmacro foo (bar) bar)
FOO

CL-USER 2 > (macro-function 'foo)
#<anonymous interpreted function 40600108FC>

请注意,这适用于典型的全局宏。还有局部和词法宏,符号宏,...