What does this function definition in clojure code example do?
===

I am following along 'Clojure in Action' and I am confused by this :

    (defn with-log [function-to-call log-statement ]
          (fn [& args]
              (println log-statement)
              (apply  function-to-call args)))

This is the segment of code that has me confused. This is what I can decipher so far:

(defn with-log [function-to-call log-statement ] ..) is defining  a function with name "with-log" that takes arguments 'function-to-call' and 'log-statement' and function-to-call is a function being passed as a parameter to this function.
The next section is confusing  to me : (fn [& args] .... is an anonymous function being defined here ?  Is the 'with-log'  function returning a new function definition ?

    (fn [& args]
              (println log-statement)
              (apply  function-to-call args))



So by calling (with-log somefunc "my label") -- is it just returing a new anonymous function  ? Or is it invoking  the anonymous function ?


    