Andy Wingo <wi...@pobox.com> writes: > On the whole I am skeptical. But, Chez Scheme and Racket both made this > change. So I could go either way, though I would like thoughts from > other people before proceeding.
While I like the change, another solution is to try to make a 'syntax-case' form that returns a lambda like syntax-rules. Either, (define-syntax foo (syntax-case* () ((foo ...) ...) ...)) or if we need access to the syntax object for e.g. unhygienic macros (define-syntax foo (syntax-case* stx () ((foo ...) ...) ...)) I haven't used this in practice, but it would cut down on some consistent verbosity. A rough implementation could be (define-syntax syntax-case* (lambda (stx) ; goodbye forever old friend ;-) (syntax-case stx () ((syntax-case* syntax-object literals rule rules ...) (identifier? #'syntax-object) #'(lambda (syntax-object) (syntax-case syntax-object literals rule rules ...))) ((syntax-case* literals rule rules ...) #'(lambda (syntax-object) (syntax-case syntax-object literals rule rules ...)))))) It wouldn't match up with the meaning of syntax-case* in racket, but if that's important to anyone, feel free to come up with another name :-) -- Ian Price "Programming is like pinball. The reward for doing it well is the opportunity to do it again" - from "The Wizardy Compiled"