This page is part of the web mail archives of SRFI 93 from before July 7th, 2015. The new archives for SRFI 93 contain all messages, not just those from before July 7th, 2015.
Jorgen Schaefer (forcer) wrote
According to section 3.4, transformers are procedures which accept a single argument. Not only is this incompatible with existing systems (such as explicit renaming), it is also problematic for later extension. I think it would be more useful to use a new form here, such as (SYNTAX-TRANSFORMER STX (SYNTAX-CASE STX ...)) or (SYNTAX-LAMBDA (STX) (SYNTAX-CASE STX ...)).
I wholeheartedly agree that a new form is necessary. In keeping with the precedent set by R5RS, as well as the syntactic closure system of MIT Scheme, I would propose (define-syntax foo (syntax-case-transformer (lambda (stx) body ...))) As a convenience form I would suggest (syntax-transformer (stx) body ...) => (syntax-case-transformer (lambda (stx) body ...)). The advantage of this over Mr. Schaefer's suggestion is that it more closely mirrors the LAMBDA form, and allows additional arguments to be added more easily. Furthermore, adding such a form would allow a far more natural definition of variable transformers: Rather than using make-variable-transformer, one would write (define-syntax foo (syntax-case-variable-transformer (lambda (stx) body ...)) with the convenience form (variable-transformer (stx) body ...) => (syntax-case-variable-transformer (lambda (stx) body ...)) David Feuer