私は「Clojure in Action」に従っていますが、これに混乱しています:
(defn with-log [function-to-call log-statement ]
(fn [& args]
(println log-statement)
(apply function-to-call args)))
これは、私が混乱したコードの部分です。これは私がこれまでに解読できるものです:
(defn with-log [function-to-call log-statement ] ..) は、引数「function-to-call」と「log-statement」と function-to- を取る「with-log」という名前の関数を定義しています。 call は、この関数にパラメーターとして渡される関数です。次のセクションは私を混乱させます: (fn [& args] .... はここで定義されている無名関数ですか? 'with-log' 関数は新しい関数定義を返しますか?
(fn [& args]
(println log-statement)
(apply function-to-call args))
(with-log somefunc "my label") を呼び出すことで、新しい匿名関数を返すだけですか? それとも匿名関数を呼び出していますか?