Clojure で、提供された関数のメタデータを処理して結果を返すライブラリ マクロを作成するにはどうすればよいですか? 関数の量は無制限であり、シーケンスにボックス化せずに渡す必要があります ((my-macro fn1 fn2)
の代わりに(my-macro [fn1 fn2])
)
たとえば、メタに :foo キーを持つ関数変数があり、マクロがそれらの値を連結するとします。次のスニペットは、REPL で機能するはずです (my-macro
名前空間にあることを考慮してください)。
user=> (defn my-func-1 {:foo "bar"} [])
(defn my-func-1 {:foo "bar"} [])
#'user/my-func-1
user=> (defn my-func-2 {:foo "baz"} [])
(defn my-func-2 {:foo "baz"} [])
#'user/my-func-2
user=> (my-macro my-func-1 my-func2)
(my-macro my-func-1 my-func2)
"barbaz"
いくつかのアプローチを試しましたが、これまでのところ単一の機能しか処理できませんでした。
ありがとう!