【发布时间】:2011-10-21 17:52:53
【问题描述】:
当使用另一个宏多次应用一个宏时,裸符号不会插入到当前上下文中:
(defmacro ty [type]
`(deftype ~type []))
(defmacro empties [& args]
(doseq [arg args]
`(ty ~arg))
)
(empties Base Person Animal)
;equivalent to:
;(ty Base)
;(ty Person)
;(ty Animal)
(derive ::Person ::Base)
(derive ::Animal ::Base)
(ty Me)
(prn ::Me)
(prn Me)
(empties Empty)
(prn ::Empty)
(prn Empty)
最后一行给出:“无法解析符号:在此上下文中为空”,即使在使用直接宏 ty 时,它也可以工作。有什么办法可以解决这个问题?如果可能没有 eval 会更好。
【问题讨论】:
标签: macros clojure metaprogramming