ハッシュマップを作成するためのマクロがあります。マッシュアップの名前と、関数を呼び出して取得したコンテンツ (この例では関数 xx) を送信する必要があります。
(defmacro data-for-mashup [mashup-name func]
`(map {} {:title :content} {~mashup-name (~@func)}))
マクロは、任意のマッシュアップ名と任意の関数を取得する必要があるため、マクロにしたかったのです。
私がそれを呼び出すとき、私は結果がこのように見えるようにしたい
{:title "Events Mashup"
:content [{ :event-name "event name 1"
:performer "performer 1"
:date "date 1"
:start-time "start time 1"
:end-time "end time 1"}
{:event-name "event name 2"
:performer "performer 2"
:date "date 2"
:start-time "start time 2"
:end-time "end time 2"}]}
content タグの値は、実際にはマップのベクトルです。
マクロを呼び出すと、次のような結果が得られるはずです
(data-for-mashup "events" (xx))
REPLでは、結果としてこれを取得します
(["events" #<datamodel$xx mashup_dsl.datamodel$xx@530f0fbd>])
macroexpand-1 の結果は次のようになります
(macroexpand-1 `(data-for-mashup "events" (xx)))
(clojure.core/map {} {:title :content} {"events" mashup-dsl.datamodel/xx})
(xx は私の名前空間の関数です。)
実際にこれに拡張したい場合
(map {} {:title :content} {"events" (xx)})
私は何を間違っていますか?