mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-20 14:19:17 +02:00
Add macro:clean
This commit is contained in:
parent
4f99b8b629
commit
f51a680eef
1 changed files with 8 additions and 5 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue