2012-04-26 10 views
2

複数の引数関数をベクトルを受け入れる新しい関数に結合するためのClojureにイディオムがあるのだろうかと思います。新しい関数は最初の引数に最初の関数を適用しなければなりません。Clojureでone-arg関数を複数引数に結合する

これは多くの状況で便利だと思います。たとえば、単純な一次元関数を使用して、点のx、y、z座標を変換することができます。

私は自分自身で次のように実装しますが、標準のAPIにすでに似たものが存在するはずです。

(defn vector-comp [& fns] 
    (fn [avect] 
    (vec (map #(%1 %2) fns avect)))) 
+0

'(into [] ...)'ではなく '(vec ...)'に注意してください。 – kotarak

+0

実際、Clojureではベクトルがキャストされることはほとんどありません。 –

答えて

1

これを書くためのその他の方法:

(defn vector-comp [& fns] 
    #(map apply fns % (repeat nil))) 

を私は標準ライブラリには既製のソリューションが存在しない99%確信している(juxtは、私が知っている最も近いが来る)

関連する問題