diff options
author | michele.simionato <devnull@localhost> | 2009-02-10 07:15:36 +0000 |
---|---|---|
committer | michele.simionato <devnull@localhost> | 2009-02-10 07:15:36 +0000 |
commit | cc24994948f1e9c0a1868c7738fbf49c36c267b1 (patch) | |
tree | 468a1538184658315c22ed21b2a2a034c390266e /scheme | |
parent | 6ef489b87a16b77e0db2223a9b13f6164e8d081c (diff) | |
download | micheles-cc24994948f1e9c0a1868c7738fbf49c36c267b1.tar.gz |
Added first chapter about advanced macros
Diffstat (limited to 'scheme')
-rw-r--r-- | scheme/sweet-macros.sls | 6 |
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 ...) |