En la respuesta aceptada a otra pregunta, Setting Clojure "constants" at runtime se usa la función clojure constantly
.Cuándo usar `constantemente` en clojure, ¿cómo y cuándo se evalúan sus argumentos?
La definición de constantly
se ve así:
(defn constantly
"Returns a function that takes any number of arguments and returns x."
{:added "1.0"}
[x] (fn [& args] x))
La cadena de documentación dice lo que hace, pero no por eso que uno usaría.
En la respuesta dada en la pregunta anterior constantemente se utiliza como sigue:
(declare version)
(defn -main
[& args]
(alter-var-root #'version (constantly (-> ...)))
(do-stuff))
Por lo tanto la función que devuelve constantemente se evalúa directamente por su resultado. Estoy confundido en cuanto a cómo esto es útil. Probablemente no entiendo cómo se evaluaría x
con y sin estar envuelto en 'constantemente'.
¿Cuándo debo usar constantly
y por qué es necesario?