6

関数と数値を受け取り、数値に対する関数の適用を返す関数と、3次関数があります。

(defn something [fn x]
  (fn x))

(defn cube [x]
  (* x x x))

次のように関数を呼び出すと、次のように機能します。

(something cube 4)

しかし、これはエラーを返します:

(something Math/sin 3.14)

ただし、これは機能します。

(something #(Math/sin %) 3.14)

説明は何ですか?

4

1 に答える 1

14

Math.sin関数ではありません!これはJavaから直接の方法であり、Clojure関数が従わなければならないさまざまなルールを理解していません。関数でラップすると、その関数はプロキシとして機能し、引数を「dumb」メソッドに渡し、結果を「スマート」な関数指向のコンテキストに返します。

于 2011-04-20T06:41:10.960 に答える