Hi- I have a bug in my code related most likely to my misunderstanding
of some arcane corner of Clojure namespaces... can someone tell me
what I'm missing?

First, create the following 2 files:

--- foo.clj ---
(ns foo)
(def x (ref true))
--- end foo.clj ---

--- bar.clj ---
(ns bar
    (:use foo))
(defn change-x []
  (dosync (ref-set x false)))
--- end bar.clj ---

Now, run the following from the REPL:

user=> (load "bar")
user=> (in-ns 'bar)
bar=> x
#<r...@15291cd: true>
bar=> (change-x)
#<r...@15291cd: false>
bar=> x
#<r...@15291cd: false>
bar=> (load "bar")
bar=> x
#<r...@15291cd: false>

As you can see, the value of x remains false, despite the fact that I
reloaded the file... can someone explain to me why reloading the code
doesn't cause the variable x to be redefined back to true? It seems if
variables in "used" files aren't re-def'ed then you can't properly re-
load your code if you have multiple namespaces...

Thanks!
Conrad Barski
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to