diff options
Diffstat (limited to 'lib/csc/macros.csc')
| -rw-r--r-- | lib/csc/macros.csc | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/lib/csc/macros.csc b/lib/csc/macros.csc index 4463f91..739f532 100644 --- a/lib/csc/macros.csc +++ b/lib/csc/macros.csc @@ -837,14 +837,15 @@ (set! ident-map (insert ident-map k v))) env) (define environment (make-environment ident-map name)) - (loop for expr in body - for expanded-expr = (expand expr environment) - with res = (make-constant #f) - do (set! res (make-sequence res expanded-expr)) - finally (return res) - if (define-syntax? expanded-expr) - do (set! environment - (add-binding - (define-syntax-name expanded-expr) - (define-syntax-transformer expanded-expr) - environment)))))) + (if (null? body) + (make-constant #f) + (loop for expr in body + for expanded-expr = (expand expr environment) + for res = expanded-expr then (make-sequence res expanded-expr) + finally (return res) + if (define-syntax? expanded-expr) + do (set! environment + (add-binding + (define-syntax-name expanded-expr) + (define-syntax-transformer expanded-expr) + environment))))))) |
