Если у меня есть функция, которая оценивает функцию
(defn func1 [c1 c2]
(fn [x1 x2]
...do some stuff with c1 c2 x1))
что я использую в другом месте на карте или сокращаю, лучше использовать встроенный
(defn func2 [x y z]
(reduce (func1 x y) z (range 20)))
или позволить связать это сначала
(defn func2 [x y z]
(let [ffunc (func1 x y)]
(reduce ffunc z (range 20))))
В первом случае я бы побеспокоился, что новая функция по x и y будет генерироваться на каждом шаге сокращения.