|
@@ -0,0 +1,16 @@
|
|
|
+(module define-macro (define-macro)
|
|
|
+ (import scheme
|
|
|
+ (chicken base)
|
|
|
+ (chicken syntax))
|
|
|
+
|
|
|
+ (define-syntax define-macro
|
|
|
+ (er-macro-transformer
|
|
|
+ (lambda (exp r c)
|
|
|
+ (let ((def (cadr exp))
|
|
|
+ (body (cddr exp)))
|
|
|
+ `(define-syntax ,(car def)
|
|
|
+ (er-macro-transformer
|
|
|
+ (lambda (e2 r2 c2)
|
|
|
+ (define (transform-func ,@(cdr def))
|
|
|
+ ,@body)
|
|
|
+ (apply transform-func (cdr e2))))))))))
|