【发布时间】:2014-11-12 20:50:53
【问题描述】:
我正在从 yaml 文件中读取数据,结果如下:
{:test1 (1 2 3)}
我可以查找键 :test1 并获得带有元素 1 2 3 的 clojure.lang.LazySeq。但是当我想在宏中使用这些数据时,它会扩展为函数调用而不是引用列表。
例如:
(defmacro mmerge
[map1 map2]
`(assoc ~(merge map1 map2) :merged true))
(mmerge {:test1 (1 2 3)} {:test2 (4 5 6)})
这被扩展为:
(clojure.core/assoc {:test2 (4 5 6), :test1 (1 2 3)} :merged true)
是否有可能以某种方式使其工作?
提前致谢
【问题讨论】:
-
为什么这是一个宏?