If you were to say, (macroexpand '(foo)), it returns (foo), even if it's
not defined in the context, so I'd say it's a little unexpected.
More annoying is the result this has on macroexpand-all, which breaks
because of this weird behaviour:
(use 'clojure.walk)
(walk/macroexpand-all '(let [Object (fn [])] (Object)))
java.lang.RuntimeException: java.lang.Exception: Expecting var, but
Object is mapped to class java.lang.Object (NO_SOURCE_FILE:0)
Of course, this example is somewhat (not super-) obvious, but in more
complex cases it could be fairly annoying.
On Tue, 2010-08-31 at 08:14 +0200, Konrad Hinsen wrote:
On 30 Aug 2010, at 23:18, Frederic Koehler wrote:
I accidentally noticed this:
On clojure 1.2, macroexpanding with a function name which is a class,
causes this ugly error:
(macroexpand '(Object))
java.lang.Exception: Expecting var, but Object is mapped to class
java.lang.Object (repl-1:2)
when presumably it should just give '(Object).
I have no clue for any actual use cases of naming your functions after
classes, but:
(let [Object (fn [] 3)] (Object))
is technically valid clojure code, so macroexpand shouldn't just
die...
You are right that
(let [Object (fn [] 3)] (Object))
is valid Clojure code, and it works as expected. However,
(Object)
is not a valid expression. It fails with exactly the same error
message as
(macroexpand '(Object))
so I'd say this is consistent behaviour.
Konrad.
--
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
--
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