¿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.

Respuestas a la pregunta(2)

Su respuesta a la pregunta