(followups trimmed to dev; is that an acceptable strategy?)

On Nov 24, 2010, at 12:44 PM, Robby Findler wrote:

> On Wed, Nov 24, 2010 at 1:49 PM, John Clements
> <cleme...@brinckerhoff.org> wrote:
>>> On Wed, Nov 24, 2010 at 11:05 AM, Robby Findler
>>> <ro...@eecs.northwestern.edu> wrote:
>>>> On Wed, Nov 24, 2010 at 12:55 PM, Joe Marshall <jmarsh...@alum.mit.edu> 
>>>> wrote:
>>>>>> On Nov 20, 2010, at 6:58 PM, Matthias Felleisen wrote:
>>>>>>> Hygiene is a technical term.  The idea is roughly that
>>>>>>> the __macro system__ (as a whole) should respect the
>>>>>>> lexical structure of your program.
>>>>> It is somewhat unfortunate that the name `hygiene' has caught
>>>>> on here.  It really ought to be called `lexical scoping' (with the
>>>>> understanding that macros have no special permission to violate
>>>>> lexical scope any more than lambda bindings do).
>>>> You know about Oleg's macro called, bind-x-to-5 that has one
>>>> subexpression does exactly its name claims, but in a hygenic macro
>>>> system?
>> Hang on... you're still using the term "hygienic" in the non-Felleisen way.
> No I'm not.
>>  That is, if we accept that a hygienic system is one that has well-defined 
>> behavior but where you can bind new names when you explicitly ask to, then
>> #lang racket
>> (define-syntax (bind-x-to-5 stx)
>>  (syntax-case stx ()
>>    [(_ exp)
>>     #`(let ([#,(datum->syntax stx 'x) 5])
>>         exp)]))
>> (bind-x-to-5 x)
>> ...is a legal macro in a hygienic macro system.
> Sure.
> But Oleg's macro doesn't do that.

Right, I understand.  Oleg shows that you can bind x even in a macro system 
that doesn't allow variable capture in the way that I used here; in other 
words, variable capture is possible even in a system-without-XXX, where XXX 
refers to the property of being able to do what I did here (straightforward 
variable capture).  IIUC, you use the word "hygienic" in the paragraph above 
(when you say "but in a hygienic macro system") to mean "system-without-XXX", 
but Matthias' point is that hygienic *doesn't* mean "system-without-XXX", it 
just means "system-where-XXX-can-only-occur-deliberately."

Naturally, this conversation would be simpler if we had a word for XXX... :)


Attachment: smime.p7s
Description: S/MIME cryptographic signature

  For list-related administrative tasks:

Reply via email to