Если у меня есть функция, которая оценивает для функциифункция Clojure в пусть связывания
(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 генерируется каждый шаг t через сокращение.
Да, это именно то, что я искал. Никогда не думал проверить его с побочным эффектом. Благодарю. –
Отметим также, что функции-экземпляры вообще дешевы, поэтому даже если бы было выделено несколько функций, это не было бы большой проблемой. Очевидно, вы можете строить функции, которые дорого строить, но это не так, как вам приходится перекомпилировать функцию каждый раз (я упоминаю это, потому что новички часто закрывают вещи, которые они компилируют каждый раз, когда они создаются). – amalloy