~ chicken-core (chicken-5) a59c9a110e49b8395b8845f2de12f27b3941e066
commit a59c9a110e49b8395b8845f2de12f27b3941e066
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Fri Mar 12 14:33:21 2010 +0100
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Wed Mar 24 07:31:20 2010 +0100
started work on fully consistent syntax
diff --git a/expand.scm b/expand.scm
index a64dbb5a..c952aa37 100644
--- a/expand.scm
+++ b/expand.scm
@@ -1087,6 +1087,50 @@
`((##sys#setter ,(car dest)) ,@(cdr dest) ,val))
(else `(##core#set! ,dest ,val)))))))
+(##sys#extend-macro-environment
+ 'let
+ '()
+ (##sys#er-transformer
+ (lambda (form r c)
+ (##sys#check-syntax 'let x '(_ #((symbol _) 0) . #(_ 1)))
+ `(##core#let ,@(cdr x)))))
+
+(##sys#extend-macro-environment
+ 'letrec
+ '()
+ (##sys#er-transformer
+ (lambda (form r c)
+ (##sys#check-syntax 'letrec x '(_ #((symbol _) 0) . #(_ 1)))
+ `(##core#letrec ,@(cdr x)))))
+
+(##sys#extend-macro-environment
+ 'let-syntax
+ '()
+ (##sys#er-transformer
+ (lambda (form r c)
+ (##sys#check-syntax 'let-syntax x '(_ #((symbol _) 0) . #(_ 1)))
+ `(##core#let-syntax ,@(cdr x)))))
+
+(##sys#extend-macro-environment
+ 'letrec-syntax
+ '()
+ (##sys#er-transformer
+ (lambda (form r c)
+ (##sys#check-syntax 'letrec-syntax x '(_ #((symbol _) 0) . #(_ 1)))
+ `(##core#letrec-syntax ,@(cdr x)))))
+
+(##sys#extend-macro-environment
+ 'set!
+ '()
+ (##sys#er-transformer
+ (lambda (form r c)
+ (##sys#check-syntax 'set! x '(_ _ _))
+ (let ((dest (cadr x))
+ (val (caddr x)))
+ (cond ((pair? dest)
+ `((##sys#setter ,(car dest)) ,@(cdr dest) ,val))
+ (else `(##core#set! ,dest ,val)))))))
+
(##sys#extend-macro-environment
'and
'()
Trap