2

Clojureには、いくつかの1つの引数関数を組み合わせてベクトルを受け入れる新しい関数にするイディオムがあるのではないかと思います。新しい関数は、最初の関数を最初の引数に適用する必要があります。

これは多くの状況で役立つと思います。たとえば、より単純な1次元関数を使用して、点のx、y、z座標を変換したい場合があります。

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

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

2 に答える 2

1

これを書く他の方法:

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

標準ライブラリには既製のソリューションがないと99%確信しています(juxt私が知っている限り最も近いものです)

于 2012-04-26T15:24:43.707 に答える
1

https://github.com/flatland/useful/blob/develop/src/useful/fn.clj#L90

于 2012-04-26T17:59:12.327 に答える