(library (syntax-rules-plus) (export syntax-rules+ define-syntax+) (import (rnrs)) (define-syntax syntax-rules+ (syntax-rules () ((_ (literal ...) ((name . args) templ) ...) (syntax-rules ( literal ...) ((_ ) '(literal ...)) ((_ ) '((... (... (name . args))) ...)) ((name . args) 'templ) ... ((name . args) templ) ... )))) (define-syntax define-syntax+ (syntax-rules+ () ((define-syntax+ (name . args) templ) (define-syntax name (syntax-rules+ () ((name . args) templ)))) ((define-syntax+ name (lit ...) (patt templ) ...) (define-syntax name (syntax-rules+ (lit ...) (patt templ) ...))) ((define-syntax+ name transformer); legacy syntax (define-syntax name transformer)) )) )