Когда использовать `постоянно` в clojure, как и когда оцениваются его аргументы?

В принятом ответе на другой вопрос Установка" констант "Clojure во время выполнения функция clojure постоянно равна

Определение постоянно выглядит так:

(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))

Таким образом, функция, возвращаемая функцией always, напрямую оценивается по ее результату. Я не понимаю, насколько это полезно. Я, вероятно, не понимаю, как x будет оцениваться с учетом и без завернутый в `постоянно '.

Когда мне следует использовать постоянно и почему это необходимо?

16
задан Community 23 May 2017 в 12:32
поделиться