【问题标题】:How to detect if a symbol resolves to a (var containing a) macro?如何检测符号是否解析为(var包含)宏?
【发布时间】:2017-05-06 21:14:33
【问题描述】:

我希望能够写出类似的东西

=> (macro? '->)
true
=>

【问题讨论】:

    标签: clojure macros


    【解决方案1】:

    宏变量具有将其标记为宏的元:

    (defn macro? [s] (-> s resolve meta :macro boolean))
    

    【讨论】:

      【解决方案2】:

      很好的答案。

      请注意,这在 ClojureScript 中不起作用,因为宏不会一直进入运行时环境。这意味着例如(resolve 'if) 将返回nil

      【讨论】:

        猜你喜欢
        • 2019-03-02
        • 1970-01-01
        • 2016-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多