Clojureマクロのnoobはここにあります。私はいくつかのオプションのパラメータを持つ関数を持っています。これを与える関数にオプションのマクロ引数を渡す方法
(defn mk-foo [name & opt]
(vec (list* name opt)))
:私は同じオプションの引数を取り、mk-foo
の呼び出しに透過的に渡すマクロを記述しようとしている
user> (mk-foo "bar" 1 2 3)
["bar" 1 2 3]
。
user> (macroexpand '(deffoo bar 1 2 3))
(def bar ["bar" 1 2 3])
不器用な感じopt
リストを平坦化するapply
の使用:所望の効果を有する
(defmacro deffoo [name & opt]
`(def ~name ~(apply mk-foo (str name) opt)))
:これまでのところ私はこれを持っています。これを行うための慣用的な方法はありますか?私は[email protected]
が必要だと思っていますが、私は引用符を得ることができません。どうもありがとう。
私はclojureにはあまりよくありませんが、 –