Я просмотрел ссылки: http://clojure.org/vars#Vars%20and%20the%20Global%20Environment, http://clojuredocs.org/clojure_core/clojure.core/binding
а также clojure и ^: dynamic и Динамическое связывание Clojure
Я до сих пор не понимаю, зачем вообще нужны binding
, поскольку каждая программа, которую я написал, была без них, и я могу найти способы написать примеры обычным способом, который я считаю более понятным. Есть ли примеры проектов / парадигм программирования, в которых это используется?
например ... в примере речи животного вы можете получить аналогичный эффект с помощью:
(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))
без макросов, без динамической привязки ... все еще очень чисто.