On 16.12.2008, at 02:58, Mark Volkmann wrote: > I'm trying to understand the difference between these. Is it that > macros expanded by macroexpand-1 could result in calls to additional > macros that won't be expanded, but macroexpand will continue expanding > until no macro calls remain?
Right. Note that only the outermost symbol in the form is checked for being a macro; neither macroexpand-1 nor macroexpand will expand macros in subexpressions. So the difference matters only if the outermost macro expands into a form whose outermost symbol refers again to a macro. > which output almost the same thing: > (let* [or__2940 (< 2 1)] (if or__2940 or__2940 (clojure.core/or (< 3 > 2) (< 1 2)))) > > What is "let*"? (doc let*) doesn't know about it. It's a more primitive form of let that does not have all the features. Destructuring, for example, is done in the let macro, which ultimately expands into let*. Look at the definition of let in boot.clj for all the details. 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 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 -~----------~----~----~----~------~----~------~--~---