Вот классический пример использования функций высшего порядка:
;; a function returns another function
(defn make-multiplyer [times]
(fn [x]
(* x times)))
;; now we bind returned function to a symbol to use it later
(def multiply-by-two (make-multiplyer 2))
;; let's use it
(multiply-by-two 100) ; => 200
В этом примере кода fn внутри fn работает так же. Когда карта вызывает (fn [t] (fn [] ...)), она получает внутренний fn.
(def list-of-funcs (map (fn [t]
(fn [] (* t 10))) ; main part
(range 5)))
;; Nearly same as
;; (def list-of-funcs (list (fn [] (* 0 10))
;; (fn [] (* 1 10))
;; ...
;; (fn [] (* 4 10))))
(for [i list-of-funcs]
(i))
; => (0 10 20 30 40)
Обновление: и, как сказал Алекс, задачи в примере кода привязаны к списку вызываемых объектов, который затем передается в .invokeAll ().