diff --git a/scheme/eval.sld b/scheme/eval.sld index d7d2f0a6..ee12e9e2 100644 --- a/scheme/eval.sld +++ b/scheme/eval.sld @@ -611,19 +611,19 @@ #f)) (expand (lambda (macro-op) - ;(define use-env (env:extend-environment '() '() '())) (if (Cyc-macro? macro-op) ;; Compiled macro, call directly - (let ((expanded - (macro:expand exp (list 'macro macro-op) a-env rename-env local-renamed))) - (analyze expanded + (let* ((expanded (_expand exp a-env rename-env '() local-renamed)) + (cleaned (macro:cleanup expanded rename-env))) + (analyze cleaned a-env rename-env local-renamed)) ;; Interpreted macro, build expression and eval - (let* ((expanded (macro:expand exp (list 'macro macro-op) a-env rename-env local-renamed))) + (let* ((expanded (_expand exp a-env rename-env '() local-renamed)) + (cleaned (macro:cleanup expanded rename-env))) (analyze - expanded + cleaned a-env rename-env local-renamed)))))) @@ -917,6 +917,10 @@ ;(newline) ;(display "*/ ") (cond + ((and (pair? expr) ;; Improper list + (not (list? expr))) + (cons (clean (car expr) bv) + (clean (cdr expr) bv))) ((const? expr) expr) ((null? expr) expr) ((quote? expr)