Dynamic vars can be set!inside an area binding. So just calling set!in *pop*will not work - you need to be in the dynamic execution area to bind somewhere in the call stack above.
(def ^:dynamic *pop* true)
(binding [*pop* *pop*] ;; defaulted to the root binding value
(set! *pop* false) ;; ok, because in dynamic binding scope
(println *pop*)) ;; prints "false" (inside per-thread dynamic binding)
(println *pop*) ;; prints "true" (root value)
, " " , binding - *pop*.
*warn-on-reflection*, , , . REPL eval REPL vars, *warn-on-reflection* . .