【问题标题】:How to check if a symbol is a macro如何检查符号是否为宏
【发布时间】:2019-06-02 20:04:32
【问题描述】:

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

【问题讨论】:

  • 吹毛求疵:符号绝不是宏。它可以命名一个宏。
  • @Svante:“可能”打开了一个有趣的蠕虫罐:符号不是直接名称的局部和词法宏和局部和词法符号宏,其中符号是类宏......
  • @RainerJoswig: _may_be ^^

标签: macros lisp common-lisp


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    相关资源
    最近更新 更多