[R6RS] SYNTAX-CASE

dyb at cs.indiana.edu dyb
Sat Apr 2 09:50:57 EST 2005


> Just as an early remark, I may say that I really dislike the ... notation
> in this form of pattern matching. I think that it is particularly obscure
> as soon as more than one ... appears in a clause. This is one of my main
> motivation for designing a new pattern matching language. 

In contrast, I really like ellipses and appreciate them even in the
general purpose matcher that we use, but I'll be interested to see what
you come up with.

> You did not say a word about hygiene. I presume that you assume hygiene,
> right? What about non-hygienic macros? If we happen to want non-hygienic
> macros, should they have a nice syntax such as SYNTAX-CASE?

Yes, I guess I didn't make that explicit.  syntax-case preserves hygiene
unless one uses syntax-object->datum and datum->syntax-object, with
which one can write arbitrary unhygienic macros.  There's no need for a
separate mechanism, since syntax-case can be used for unhygienic macros,
although we might want to remove the restriction that the syntax-case
"expr" evaluate to a syntax object to allow it to operate on lists
and vectors.  (Most if not all current syntax-case implementations are
not restricted to syntax objects, but I stuck the restriction in when
we agreed that syntax forms necessarily evaluate to syntax objects.)

Kent


More information about the R6RS mailing list