summaryrefslogtreecommitdiff
path: root/scheme
diff options
context:
space:
mode:
authormichele.simionato <devnull@localhost>2009-02-10 07:15:36 +0000
committermichele.simionato <devnull@localhost>2009-02-10 07:15:36 +0000
commitcc24994948f1e9c0a1868c7738fbf49c36c267b1 (patch)
tree468a1538184658315c22ed21b2a2a034c390266e /scheme
parent6ef489b87a16b77e0db2223a9b13f6164e8d081c (diff)
downloadmicheles-cc24994948f1e9c0a1868c7738fbf49c36c267b1.tar.gz
Added first chapter about advanced macros
Diffstat (limited to 'scheme')
-rw-r--r--scheme/sweet-macros.sls6
1 files changed, 4 insertions, 2 deletions
diff --git a/scheme/sweet-macros.sls b/scheme/sweet-macros.sls
index 5818e73..18e9893 100644
--- a/scheme/sweet-macros.sls
+++ b/scheme/sweet-macros.sls
@@ -10,9 +10,11 @@
;; helper macro 1
(define-syntax local
(lambda (x)
- (syntax-case x ()
+ (syntax-case x (syntax-match)
((local expr)
#'expr)
+ ((local (let-form name value) ... (syntax-match rest ...))
+ #'(syntax-match (local (let-form name value) ...) rest ...))
((local (let-form name value) (l n v) ... expr)
#'(let-form ((name value)) (local (l n v) ... expr))))
))
@@ -56,7 +58,7 @@
((ctx <patterns>)
#''((... (... patt)) ...))
((ctx <source>)
- #''(self (local (let-form name value) ...) (literal ...)
+ #''(local (let-form name value) ...) (self (literal ...)
(... (... (sub patt skel . rest))) ...))
((ctx <transformer>)
#'(self (local (let-form name value) ...) (literal ...)