ns-unmap isn't typically used.  But for durability, we can think of
JVM shutdown/startup as unmapping everything and starting fresh.
Therefore, expected behavior for ns-unmap should be the same as
behavior for deserializing and loading an object after a new JVM
startup.  Here's another issue I ran into:

=> (def a 1)
#'user/a

=> (defn b [] a)
#'user/b

=> (b)
1

=> (def a 2)
#'user/a

=> (b)
2

=> (binding [a 3]
     (b))
3

So far so good...

=> (ns-unmap *ns* 'a)
nil

=> a
java.lang.Exception: Unable to resolve symbol: a in this context

=> (b)
2

=> (binding [a 3]
     (b))
java.lang.Exception: Unable to resolve var: a in this context

So what's the expected behavior here?  I would think that after a is
unmapped, b should no longer work.  Instead, it's hanging onto a with
the last value.  And the binding form doesn't work anymore, so there's
no way to dynamically bind over it.  It's like a weird hybrid of
lexical and dynamic binding...

Thanks,
Alyssa Kwan

-- 
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