diff --git a/scheme/cyclone/macros.sld b/scheme/cyclone/macros.sld index a0db3d44..f0d9f143 100644 --- a/scheme/cyclone/macros.sld +++ b/scheme/cyclone/macros.sld @@ -8,7 +8,7 @@ ;;;; (define-library (scheme cyclone macros) (import (scheme base) - ;(scheme write) ;; Debug only + (scheme write) ;; Debug only (scheme eval) (scheme cyclone util) ) @@ -54,13 +54,15 @@ (define (macro:expand exp macro mac-env) (let* ((use-env (env:extend-environment '() '() '())) (compiled-macro? (or (Cyc-macro? (Cyc-get-cvar (cadr macro))) - (procedure? (cadr macro))))) + (procedure? (cadr macro)))) + (result #f)) ;(newline) ;(display "/* ") ;(display (list 'macro:expand exp macro compiled-macro?)) ;(display "*/ ") ;; Invoke ER macro + (set! result (cond ((not macro) (error "macro not found" exp)) @@ -76,7 +78,14 @@ (list 'quote exp) (Cyc-er-rename use-env mac-env) (Cyc-er-compare? use-env)) - mac-env))))) + mac-env)))) +; (newline) +; (display "/* ") +; (display (list 'macro:expand exp macro compiled-macro?)) +; (newline) +; (display (list result)) +; (display "*/ ") + result)) ; TODO: get macro name, transformer ; TODO: let-syntax forms diff --git a/scheme/cyclone/util.sld b/scheme/cyclone/util.sld index 07febab1..e9e85233 100644 --- a/scheme/cyclone/util.sld +++ b/scheme/cyclone/util.sld @@ -483,13 +483,18 @@ (let ((renamed (gensym identifier))) (env:define-variable! renamed val mac-env) renamed)) - (else + #;((not (eq? val 'not-defined)) ;; Unrenamed variable identifier (let ((renamed (gensym identifier))) (env:define-variable! renamed identifier use-env) +; (env:define-variable! renamed identifier mac-env) ;; TODO: renamed val? +(Cyc-write `(ER rename ,identifier to ,renamed) (current-output-port)) +(Cyc-display "\n" (current-output-port)) renamed) - identifier ;; TESTING! - ))) + ;identifier ;; TESTING! + ) + (else + identifier))) ; ;(gensym identifier) ; gensym not good enough, need to also preserve ref trans.