diff options
-rw-r--r-- | scheme/sweet-macros/helper3.mzscheme.sls | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/scheme/sweet-macros/helper3.mzscheme.sls b/scheme/sweet-macros/helper3.mzscheme.sls new file mode 100644 index 0000000..79e6984 --- /dev/null +++ b/scheme/sweet-macros/helper3.mzscheme.sls @@ -0,0 +1,20 @@ +#!r6rs +(library (sweet-macros) +(export local syntax-match def-syntax) +(import (rnrs) (for (sweet-macros helper2) run expand)) + +(define-syntax def-syntax + (syntax-match (extends local) + (sub (def-syntax name (extends parent) + (local loc ...) (literal ...) + clause ...) + #'(define-syntax name + (syntax-match (local loc ...) (literal ...) + clause ... + (sub x ((parent <transformer>) #'x))))) + (sub (def-syntax (name . args) skel . rest) + #'(define-syntax name (syntax-match () (sub (name . args) skel . rest)))) + (sub (def-syntax name transformer) + #'(define-syntax name transformer)) + )) +) |