В принятом ответе на другой вопрос Установка 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))
Строка doc говорит, что она делает, а не почему ее можно использовать.
В ответе, указанном в предыдущем вопросе, постоянно используется следующим образом:
(declare version)
(defn -main
[& args]
(alter-var-root #'version (constantly (-> ...)))
(do-stuff))
Таким образом, функция, возвращаемая постоянно, напрямую оценивается для ее результата. Я смущен, насколько это полезно. Я, вероятно, не понимаю, как x
будет оцениваться с помощью и не обертываться "постоянно".
Когда мне следует использовать constantly
и зачем это нужно?