Hi all,

First off, clojure is great.  I've been playing with it off and on for
a few
months now, and am really impressed.

While using debug-repl I noted a minor oddity.  This is just an
example; not
having a real problem with that package itself.

user=> (require 'clojure.contrib.debug)
nil
user=> (clojure.contrib.debug/debug-repl)
java.lang.Exception: Unable to resolve symbol: debug-repl in this
context (NO_SOURCE_FILE:58)

debug-repl is a macro, and (clojure.contrib.debug/debug-repl) expands
first to
(debug-repl nil).  The above works fine after a (use
'clojure.contrib.debug) in
place of the require.

I'm guessing the expansion happens in the user namespace, and as a
consequence
the symbol "debug-repl" in the expansion can't be found.  Working
around this
is easy enough, but I am now curious about the impact of this behavior
on macro
design.

Would it be generally safe to say that it's good design to qualify
symbols with
namespaces in macros?  That is, when you expect them to expand to a
specific
var.  Or am I missing some finer details?

As an aside, I'd also like to mention that I was originally working
with this
in code, not at the repl.  And instead of NO_SOURCE_FILE:58, it gave
me
my-file.clj:58 even though the line referred to is line 58 in the
debug.clj
file.  Very confusing!

Ryan Twitchell

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