[racket] Flatten syntax and runtime phases?

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Fri Jul 13 18:09:48 EDT 2012

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
> <matthias at 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
>> 



Posted on the users mailing list.