From 5911336d1604c72db363c1bc8ed32df62523c141 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Tue, 27 Jul 2021 16:39:13 -0400 Subject: [PATCH] WIP - first attempt to clean eval macro's This seemed promising but fails when compiling cyclone: cyclone -A . srfi/106.sld Error at line 376, column 5 of srfi/106.sld: Unbound variable: unquote --- scheme/eval.sld | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/scheme/eval.sld b/scheme/eval.sld index d7d2f0a6..617e7e9d 100644 --- a/scheme/eval.sld +++ b/scheme/eval.sld @@ -614,16 +614,18 @@ ;(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 + (macro:expand exp (list 'macro macro-op) 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 (macro:expand exp (list 'macro macro-op) a-env rename-env local-renamed)) + (cleaned (macro:cleanup expanded rename-env))) (analyze - expanded + cleaned a-env rename-env local-renamed)))))) @@ -917,6 +919,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)