KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I tried to understand dynamic variables and binding function so I tried this (clojure 1.3): user=> (defn f [] (def ^:dynamic x 5) (defn g [] (println x)) (defn h [] (binding [x 3] (g))) (h)) #'user/f user=> (f) 5 nil Confused, I tried this somewhat simpler code: user=> (def ^:dynamic y 5) #'user/y user=> (defn g [] (println y)) #'user/g user=> (defn h [] (binding [y 3] (g))) #'user/h user=> (h) 3 nil What is the difference between the two pieces of code? Why does the second example work but the first does not? Hint: I just realized that the following works (still don't fully understand why): user=> (def ^:dynamic y 5) #'user/y user=> (defn f [] (defn g [] (println y)) (defn h [] (binding [y 3] (g))) (h)) #'user/f user=> (f) 3 nil user=>
Tags (comma-separated)
Save Edits
Cancel