On Mar 21, 2014, at 3:49 PM, Daniel Prager <[email protected]> wrote:
> Thank-you for raising this topic. > > > I don't understand well its macros (are completely different for me than CL > > macros). > > Me neither. And I'm somewhat torn. The trade-off as I understand it is that > CL-style macros are *much* easier to learn, but prone to aliasing while > hygenic macros are technically superior because they compose better and you > can't accidentally hit aliasing problems. But when it comes to learning, the > advantages are reversed. Does… CL have a pattern-based macro syntax like syntax-rules? If not, it seems surprising to argue that lisp macros would be easier to learn. Can you give examples? John Clements > > William Byrd, in this 2012 interview with Michael Fogus, comments on some of > these issues: > Clojure's macro system appears to me to be a kludge, trying to patch up > Common Lisp's defmacro without going all the way to real hygienic macros. I > don't mean to be overly critical--I'm not happy with the state of Scheme, > either, which has not one but two hygienic macro systems, neither of which is > ideal. > > The more powerful Scheme macro system, syntax-case, gives the programmer the > full power of Scheme at macro expansion time, along with the ability to > "bend" hygiene when desired. Syntax-case is powerful enough to define Common > Lisp's defmacro (and almost certainly powerful enough to define Clojure's > defmacro as well). Unfortunately, syntax-caseis notoriously complicated. As > far as I can tell, mastering syntax-case requires a mental model equivalent > in complexity to the macro expander's implementation. As a result, Dan, Oleg, > and I refuse to use syntax-case. > > The other Scheme macro system, syntax-rules, is strictly less powerful than > syntax-case, and can in fact be implemented in syntax-case. However, the > mental model required to use syntax-rules is much simpler, as it is > essentially a term-rewriting system with hygiene. For vanilla forms such as > let, and, and or, syntax-rules works beautifully. For incredibly complicated > macros, such as the match pattern matcher used in Kent Dybvig's compiler > course at Indiana, the full power of syntax-case is probably required. For > almost all other macros, it seems like a system with just a little more power > than syntax-rules would be both sufficient and ideal. For example, often a > macro writer wishes to concatenate two symbols--currently this requires using > syntax-case, even if the rest of the macro is trivial. > > If a hygienic macro system that hits the sweet spot between syntax-rules and > syntax-caseis created, I hope it will be adopted by Schemers and Clojurers > alike. A few steps in this direction include the Dylan macro system and Ryan > Culpepper's syntax-parse. Also needed is a way to learn how to write > non-trivial hygienic macros that doesn't involve earning a PhD in programming > languages from Indiana or Northeastern. > > The Racket and Scheme inner circle say that hygienic macros are the future, > but I wonder whether a worse-is-better argument can be mounted for CL and/or > Clojure macros. > > Personally, I only write Racket macros sparingly, but would like to develop > my level of understanding of comfort. > > What are some good ways to smooth out the learning curve? > > > Dan > > > > On Sat, Mar 22, 2014 at 12:42 AM, Matthias Felleisen <[email protected]> > wrote: > > Welcome. > > Why don't you take a look at Greg's macro write-up > > http://www.greghendershott.com/fear-of-macros/ > > and see whether this helps you wrap your head around macros. > > > > > On Mar 21, 2014, at 9:48 AM, Alejandro Zamora Fonseca <[email protected]> > wrote: > > > Hi!! > > My name is > > Alejandro, i'm a Cuban Computer Scientist, new to Lisp(having 1 year using > > CL), and wishing change to Racket. > > I see the list and I hope make me a better Lisp programmer with your kindly > > help. > > > > I have Racket installed in my PC, I like the language and tools, but yet I > > don't understand well its macros(are completely different for me than CL > > macros) and continuations. > > > > Greetings for all. > > > > Alejandro > > > > > > > > > > -- > > > > Este mensaje le ha llegado mediante el servicio de correo electronico que > > ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema > > Nacional de Salud. La persona que envia este correo asume el compromiso de > > usar el servicio a tales fines y cumplir con las regulaciones establecidas > > > > Infomed: http://www.sld.cu/ > > > > ____________________ > > Racket Users list: > > http://lists.racket-lang.org/users > > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users > > > > -- > Daniel Prager > Agile/Lean Coaching, Software Development and Leadership > Startup: www.youpatch.com > Twitter: @agilejitsu > Blog: agile-jitsu.blogspot.com > ____________________ > Racket Users list: > http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users

