[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Scheme-reports] auxiliary syntax



On Mon, Jan 7, 2013 at 3:56 AM, Peter Bex <Peter.Bex@x> wrote:
On Sun, Jan 06, 2013 at 12:37:18PM -0500, John Cowan wrote:
> Peter Bex scripsit:
> > I think trying to catch these things is misguided.  It's fine if an
> > implementation like Racket does this to guide students, but seasoned
> > Scheme programmers don't need this kind of hand-holding.
>
> On the contrary.  The whole point of binding them by default is so that
> they can safely be rebound and used as auxiliary keywords by other macros.
> If they are left unbound, they are inherently non-hygienic.

Isn't that by definition the case with aux-keywords in syntax-rules?
Adding them to the default environment for this reason seems rather
contrived, unless you go all the way and remove aux-keywords from
syntax-rules altogether.  You can't have your pie and eat it too.

Also, I'm not sure if this is R5RS-compatible.  The second form in the
following returns 1 in Chibi, Chicken, Gambit, MIT Scheme and Gauche:

(define else #f)
(cond (else 1))

Note this is very deliberate on Chibi's part.  It's hygiene algorithm
would not match this by default, but it goes through extra effort to
make this work because the whole concept of auxiliary keywords
is broken.  Notably, it's otherwise impossible for library A to use
macros from unrelated libraries B and C which happen to have
chosen the same keyword.

There is a compile-time option to disable this feature in Chibi.

-- 
Alex

_______________________________________________
Scheme-reports mailing list
Scheme-reports@x
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports