[racket] Plea for neologism (was: Re: letoverlambda)

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Wed Nov 24 15:44:52 EST 2010

On Wed, Nov 24, 2010 at 1:49 PM, John Clements
<clements at brinckerhoff.org> wrote:
>> On Wed, Nov 24, 2010 at 11:05 AM, Robby Findler
>> <robby at eecs.northwestern.edu> wrote:
>>> On Wed, Nov 24, 2010 at 12:55 PM, Joe Marshall <jmarshall at 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.

Robby


Posted on the users mailing list.