4

このコードでは、

(defn faux-curry [& args] (apply partial partial args))

この部分をどのように理解すればよいですか:

(apply partial partial args)

私の理解では、「部分的」は関数といくつかの値を取り、元の関数の変数の一部が固定された新しい関数を返します。最初の「部分的」に適用されますか..引数で何かを行う2番目の「部分的」?? 理解するためのより良い方法はありますか?

4

1 に答える 1

5

サンプル引数を使用して手動で評価すると役立つ場合があります。

(apply partial partial [+ 1 2 3])                     ; 1.
; =>
(partial partial + 1 2 3)                             ; 2.
; =>
(fn [& args] (apply partial + 1 2 (concat [3] args))) ; 3.

faux-curryin 1.;の本体でサンプル引数を置き換えています。次にapply、2.で手で適用します。次に、3. で最初のpartialものを手動で適用します ( 3. の実際には、コンパイル済みコード[3]の外側への「残りの引数」のシーケンスになることに注意してください)。partial

注意すべき重要なことは、partialは他の関数と同様であるため、特に、それ自体が最初の引数として に渡される可能性があるということpartialです。

于 2013-06-04T22:15:11.623 に答える