summaryrefslogtreecommitdiff
path: root/scheme
diff options
context:
space:
mode:
authormichele.simionato <devnull@localhost>2009-03-03 05:17:29 +0000
committermichele.simionato <devnull@localhost>2009-03-03 05:17:29 +0000
commit1847eff0d31d5ac020581022b64cb8eb3159d9b3 (patch)
tree2d9891d87b7c2f279cd2f14b38f4505d35e5a723 /scheme
parentde5623df700f7205505e05a7214fb0a0871790e3 (diff)
downloadmicheles-1847eff0d31d5ac020581022b64cb8eb3159d9b3.tar.gz
Forgot a module
Diffstat (limited to 'scheme')
-rw-r--r--scheme/sweet-macros/helper3.mzscheme.sls20
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))
+ ))
+)