我正在尝试创建一个函数来创建一个以另一个结构为基础的新基础,作为开始,我尝试制作一个宏来创建一个与旧结构具有相同字段的新结构。我认为应该执行此操作的宏如下,但它给出了以下错误:
java.lang.Exception: Can't use qualified name as parameter: user/p1__132
宏:
(defmacro prototype [structure obj]
`(apply struct ~structure (map #(~obj %) (keys ~obj))))
使用示例:
(defstruct bintree :data :left :right)
(def a (struct bintree 3))
(prototype bintree a)
在这种情况下,所需的输出将是
{:data 3 :left nil :right nil}