Add macro:clean

This commit is contained in:
Justin Ethier 2016-09-16 18:19:50 -04:00
parent 4f99b8b629
commit f51a680eef

View file

@ -99,17 +99,20 @@
(env:all-values env)
*macro:renamed-variables*)))
#;(define (macro:cleanup expr)
(define (macro:cleanup expr)
(define (clean expr bv) ;; Bound variables
(cond
((const? expr) expr)
((prim? expr) expr)
;((prim? expr) expr)
((quote? expr) expr)
((define-c? expr) expr)
((ref? expr)
;; TODO: if symbol has been renamed and is not a bound variable,
;; if symbol has been renamed and is not a bound variable,
;; undo the rename
expr)
(let ((val (env:lookup expr *macro:renamed-variables* #f)))
(if (and val (not (member val bv)))
(clean val bv)
expr)))
((if? expr)
`(if ,(clean (if->condition expr) bv)
,(clean (if->then expr) bv)