No apologies needed. I just wanted to warn you that some old-style Lispers will give you a hard time concerning 'hygiene' and I also wanted to give you an idea that they usually don't understand the full range of expressive power we get from it, not to speak of the conflation of pattern-matching style macro definitions and scope-sensitivity. [Yes, these ideas are fully orthogonal and our senior author on the original 'hygiene' paper wanted to make this point by forcing us into using Lisp-style macros. People never understood anyway.] -- Matthias
On Jul 13, 2012, at 5:06 PM, Nick Sivo wrote: >> You might have an extremely deep understanding of macros, in which case you >> can ignore the next sentence. > > I don't, and apologize if I've been using the term (and others!) > incorrectly. What little I know has come from the documentation and > papers I've encountered, and lacks the rigor of academic training or > insight from the history of Racket. > > In providing an observation based on my personal (and limited) > experience, I feel I've accidentally happened upon a (contentious?) > topic with history unfamiliar to me, and about which I'm not currently > able to converse precisely. Oops :) > > -Nick > > On Fri, Jul 13, 2012 at 12:37 PM, Matthias Felleisen > <matth...@ccs.neu.edu> wrote: >> >> On Jul 13, 2012, at 2:05 PM, Nick Sivo wrote: >> >>> There were only a few places where breaking hygiene was a feature, >> >> >> You might have an extremely deep understanding of macros, in which case you >> can ignore the next sentence. >> >> Hygiene -- as it is used nowadays, not the thing for which I imported >> Barendregt's original term -- does not just prohibit certain idioms it also >> enables some that cannot be implemented with old macro system. >> >> And yes, the cost you pay is that you need to learn a distinct notation. BUT >> I would argue that for true syntax programmers, this is a plus because it >> reminds them of the very important fact that syntax is evaluated at a very >> different time from run-time code, and that values flowing from one phase to >> another work only by 'accident'. [I understand enough to know that it isn't >> really by accident but in a sense it is and often it fails in subtle ways.] >> >> -- Matthias >> ____________________ Racket Users list: http://lists.racket-lang.org/users