¿Cuál es el propósito práctico de las variables dinámicas y vinculantes de clojure?
He echado un vistazo a las referencias:http://clojure.org/vars#Vars%20and%20the%20Global%20Environment, http://clojuredocs.org/clojure_core/clojure.core/binding
tanto comoclojure y ^: dinámico yClojure Dynamic Binding
Todavía no entiendo por qué hay una necesidad debinding
en absoluto, como todos los programas que he escrito han estado sin ellos y puedo encontrar maneras de escribir los ejemplos de la forma convencional, lo que me parece más comprensible. ¿Hay ejemplos de paradigmas de proyectos / programación que hagan uso de esto?
por ejemplo ... en el ejemplo de hablar con animales, puede obtener un efecto similar con:
(def dog {:name "Dog" :sound "Woof"})
(def cat {:name "Cat" :sound "Meow"})
(defn speak [animal]
(str (:name animal) " says " (:sound animal))
(println (speak dog))
(println (speak cat))
Sin macros, sin enlace dinámico ... aún muy limpio.