如何检测符号是否解析为(包含a的宏)宏?

时间:2017-05-06 21:14:34

标签: clojure macros

我希望能够写出类似

的内容
=> (macro? '->)
true
=>

2 个答案:

答案 0 :(得分:6)

宏变量有meta将其标记为宏:

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

答案 1 :(得分:0)

好的答案。

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