Re: Different behaviour when using (def ^:macro ...) outside top-level

2013-09-13 Thread André Gustavo Rigon
Yeah, it's the difference in behaviour that I don't understand. Thanks for the workaround though Gunnar. On Friday, September 13, 2013 2:35:37 AM UTC-3, Cedric Greevey wrote: > > On Fri, Sep 13, 2013 at 1:08 AM, Gunnar Völkel > > > wrote: > >> `def` does not handle `:macro true` metadata on the

Re: Different behaviour when using (def ^:macro ...) outside top-level

2013-09-12 Thread Cedric Greevey
On Fri, Sep 13, 2013 at 1:08 AM, Gunnar Völkel < gunnar.voel...@googlemail.com> wrote: > `def` does not handle `:macro true` metadata on the provided symbol. > Umm ... according to the OP, it worked perfectly when the def was a top-level form, just not when it was nested in an if. If your claim w

Re: Different behaviour when using (def ^:macro ...) outside top-level

2013-09-12 Thread Gunnar Völkel
`def` does not handle `:macro true` metadata on the provided symbol. But you can work around that like clojure.core does, e.g. for the macro `defmacro` after the `(def ... defmacro ...)` call the following is called: `(. (var defmacro) (setMacro))` -- -- You received this message because you

Different behaviour when using (def ^:macro ...) outside top-level

2013-09-12 Thread André Gustavo Rigon
Hi! If I evaluate (def ^:macro my-defn1 #'defn) a macro named 'my-defn1' is defined, which I can use like 'defn'. However, if I use instead (if true (def ^:macro my-defn2 #'defn)) the var for 'my-defn2' doesn't have the :macro metadata set and I can't use it as a macro, even though the 'de