(def ^:dynamic ca false)
(binding [ca true]
(prn "now:" ca)
(map #(prn "now2:" ca %) [1 2 3])
)
onedam.testfeng - "now:" true - INFO [2019-05-13 18:24:55.826]
onedam.testfeng - "now2:" false 1 - INFO [2019-05-13 18:24:55.826]
onedam.testfeng - "now2:" false 2 - INFO [2019-05-13 18:24:55.826]
onedam.testfeng - "now2:" false 3 - INFO [2019-05-13 18:24:55.826]
clojure 1.10 jdk 1.8
map is lazy, so your seq is not realised until after it has left scope of binding, see eg https://cemerick.com/2009/11/03/be-mindful-of-clojures-binding/.
tks