(def static-scoped 21)
(def ^:dynamic dynamic-scoped 21)
(defn some-function []
(println "static = " static-scoped)
(println "dynamic = " dynamic-scoped))
(defn other-function []
(binding [dynamic-scoped 42]
(println "Established new binding in dynamic environment")
(some-function)))
;; Trying to establish a new binding for the static-scoped
;; variable won t affect the function defined
;; above.
(let [static-scoped 42]
(println "This binding won't affect the variable resolution")
(other-function))
(println "calling some-function directly")
(some-function)
CihkZWYgc3RhdGljLXNjb3BlZCAyMSkKKGRlZiBeOmR5bmFtaWMgZHluYW1pYy1zY29wZWQgMjEpCgooZGVmbiBzb21lLWZ1bmN0aW9uIFtdCiAgKHByaW50bG4gInN0YXRpYyA9ICIgc3RhdGljLXNjb3BlZCkKICAocHJpbnRsbiAiZHluYW1pYyA9ICIgZHluYW1pYy1zY29wZWQpKQoKKGRlZm4gb3RoZXItZnVuY3Rpb24gW10KICAoYmluZGluZyBbZHluYW1pYy1zY29wZWQgNDJdCiAgICAocHJpbnRsbiAiRXN0YWJsaXNoZWQgbmV3IGJpbmRpbmcgaW4gZHluYW1pYyBlbnZpcm9ubWVudCIpCiAgICAoc29tZS1mdW5jdGlvbikpKQoKCjs7IFRyeWluZyB0byBlc3RhYmxpc2ggYSBuZXcgYmluZGluZyBmb3IgdGhlIHN0YXRpYy1zY29wZWQKOzsgdmFyaWFibGUgd29uIHQgYWZmZWN0IHRoZSBmdW5jdGlvbiBkZWZpbmVkCjs7IGFib3ZlLgoobGV0IFtzdGF0aWMtc2NvcGVkIDQyXQogIChwcmludGxuICJUaGlzIGJpbmRpbmcgd29uJ3QgYWZmZWN0IHRoZSB2YXJpYWJsZSByZXNvbHV0aW9uIikKICAob3RoZXItZnVuY3Rpb24pKQoKKHByaW50bG4gImNhbGxpbmcgc29tZS1mdW5jdGlvbiBkaXJlY3RseSIpCihzb21lLWZ1bmN0aW9uKQ==