Существует два макроса binding
и with-bindings
для переопределения динамических переменных. Однако, похоже, что у обоих есть утилита, в чем разница между ними?
;; binding
(def :^dynamic a 10)
(binding [a 20] a) ;; => 20
a ;; => 10
;; with-bindings
(with-bindings {#'a 20}
a) ;; => 20
a ;; => 10
они оба изменяют динамическую область действия для каждого потока и возвращают ее в корневую привязку после окончания лексической области действия.