7

次のような関数を返す関数を定義すると:

(defn add-n
  [n]
  (fn [x] (+ x n)))

次に、結果をシンボルに割り当てることができます。

(def add-1 (add-n 1))

そしてそれを呼び出します:

(add-1 41)
;=> 42

(add-n 1)の結果を新しいシンボルに割り当てずに呼び出すにはどうすればよいですか? 以下は、この出力を生成します。

(println (add-n 1))
#<user$add_n$fn__33 user$add_n$fn__33@e9ac0f5>
nil

#<user$add_n$fn__33 user$add_n$fn__33@e9ac0f5>、生成された関数への内部参照です。

4

1 に答える 1

16

簡単:

(println ((add-n 1) 41))

表示された出力は関数定義です。それを丸括弧で囲み、パラメーターを追加するだけで十分に呼び出すことができます。

于 2011-05-15T13:54:05.690 に答える