Dans la réponse acceptée à une autre question, Setting Clojure "constants" at runtime, la fonction clojure constantly
est utilisée.Quand utiliser `constamment` dans clojure, comment et quand ses arguments sont-ils évalués?
La définition de constantly
ressemble à ceci:
(defn constantly
"Returns a function that takes any number of arguments and returns x."
{:added "1.0"}
[x] (fn [& args] x))
La chaîne doc dit ce qu'il fait, mais pas pourquoi on l'utiliserait.
Dans la réponse donnée à la question précédente est constamment utilisé comme suit:
(declare version)
(defn -main
[& args]
(alter-var-root #'version (constantly (-> ...)))
(do-stuff))
Ainsi, la fonction renvoyée par est constamment évalué directement à son résultat. Je suis confus quant à la façon dont cela est utile. Je ne comprends probablement pas comment x
serait évalué avec et sans être enveloppé dans `constamment '.
Quand devrais-je utiliser constantly
et pourquoi est-ce nécessaire?