10

基本的には のようなことをする必要がありmapますが、コレクション内のすべての要素に関数を適用する代わりに、同じ (セットの) 値を関数のコレクションに適用する必要があります (この操作には名前がありますか?) . これは簡単な質問のように思えるかもしれませんが、Clojure でそれを行うための慣用的な方法は見つかりませんでした。たとえば、各関数に 1 つの値のみを適用する必要がある特殊なケースでは、

(for [f funs] (f value))

wherevalueはもちろん、各関数が引数として受け取る必要がある値であり、引数としてfuns呼び出す必要がある関数のコレクションですvalue

私の質問は、これを行う関数が Clojure にあるということですが、任意の数の引数に対しても一般化されていますか? それとも、上記は実際に慣用的な Clojure ですか?

4

2 に答える 2

20

あなたが探していますjuxt

隣接

関数のセットを取り、それらの fn の並置である fn を返します。返される fn は可変数の引数を取り、各 fn を引数に (左から右に) 適用した結果を含むベクトルを返します。((juxt abc) x) => [(ax) (bx) (cx)]

于 2013-07-26T07:30:10.487 に答える