So "complete recursive expansion" is postwalk macroexpansion? It seems like that could break anaphoric macros, and likely others. A macro has the option of calling macroexpand-all on its own contents if it wants only special forms, but it shouldn't be forced to take only special forms.
Also, here's a sketch of how you could do symbol macros using Riddley: https://gist.github.com/ztellman/6439318. Please let me know if I'm missing something w.r.t. how symbol macros are done in tools.macros. Zach On Wed, Sep 4, 2013 at 2:16 AM, Konrad Hinsen < googlegro...@khinsen.fastmail.net> wrote: > ** > On Wed, Sep 4, 2013, at 09:25 AM, Zach Tellman wrote: > > I'm not sure what you mean by "complete recursive expansion". Could > you expand > on that? > > Completely ;-) > > By complete recursive expansion I mean that you get a form that is fully > reduced to > the core language, i.e. it contains no more macro applications at any > level. > > If you leave macro expansion to the compiler, it does it when it arrives > at the > macro during evaluation. Then it does a plain non-recursive macroexpand > and goes on > evaluating. Any macro thus has access to the unexpanded contents of its > form, but > not to what it eventually expands to. For many applications that's just > fine, which > is why this approach has been the default in the Lisp world for a long > time. > > As for replicating the behavior of the compiler, I'd assert that > unless &env is > precisely what it would be without ahead of time macroexpansion, the > compiler's > behavior isn't being replicated. > > I agree. tools.macro predates &env, which is why it is not supported. > Since I have > never need &env support and nobody ever asked for it (before now), it's > not there. > I don't see any reason why it couldn't be supported. > > 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 a topic in the > Google Groups "Clojure" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/clojure/a68aThpvP4o/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.