В принятом ответе на другой вопрос Установка "постоянных" Clojure во время выполнения используется функция clojure constantly
.
Определение constantly
выглядит так:
(defn constantly
"Returns a function that takes any number of arguments and returns x."
{:added "1.0"}
[x] (fn [& args] x))
Строка документа говорит о том, что она делает, но не о том, зачем ее использовать.
В ответе, приведенном в предыдущем вопросе, постоянно используется следующее:
(declare version)
(defn -main
[& args]
(alter-var-root #'version (constantly (-> ...)))
(do-stuff))
Таким образом, функция, возвращаемая постоянно, напрямую оценивается по ее результату. Я не понимаю, как это полезно. Я, вероятно, не понимаю, как x
будет оцениваться с и без того, чтобы быть завернутым в "постоянно".
Когда мне следует использовать constantly
и зачем это нужно?