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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en