別の構造体をベースとして新しいベースを作成する関数を作成しようとしています。最初に、古い構造体と同じフィールドを持つ新しい構造体を作成するマクロを作成しようとしました。私がこれを行うべきだと思ったマクロは以下のとおりですが、次のエラーが発生します。
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}