> Does... CL have a pattern-based macro syntax like syntax-rules? Not buit-in.
> If not, it seems surprising to argue that lisp macros would be easier to learn. Can you give examples? The explanation of CL macros and their application in On Lisp<http://www.bookshelf.jp/texi/onlisp/onlisp.html> seems more accessible, for example, than anything I've been able to lay my hands on for the syntax-rules/case/parse. Dan On Sat, Mar 22, 2014 at 10:28 AM, John Clements <[email protected]>wrote: > > 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 > > -- *Daniel Prager* Agile/Lean Coaching, Software Development and Leadership Startup: www.youpatch.com Twitter: @agilejitsu <https://twitter.com/agilejitsu> Blog: agile-jitsu.blogspot.com
____________________ Racket Users list: http://lists.racket-lang.org/users

