This commit is contained in:
Justin Ethier 2016-02-02 20:56:04 -05:00
parent 5b557f889d
commit bab266d897

View file

@ -18,9 +18,9 @@
(define-syntax test (define-syntax test
(er-macro-transformer (er-macro-transformer
(lambda (expr rename compare) (lambda (expr rename compare)
`(begin 1 (define tmp #t) 3)))) `(begin ,(if (cadr expr) '(test #f) 1) (define tmp #t) 3))))
(test) (test #t)
(test) (test #f)
(write tmp) (write tmp)
))) )))
@ -49,8 +49,9 @@
(let* ((expr (car exp)) (let* ((expr (car exp))
(begin-exprs (begin->exps expr)) (begin-exprs (begin->exps expr))
(expanded-exprs (map (lambda (expr) (inner-expand expr env)) begin-exprs))) (expanded-exprs (map (lambda (expr) (inner-expand expr env)) begin-exprs)))
;(write `(begin-DEBUG result: ,result begin-exprs: ,begin-exprs expanded-exprs: ,expanded-exprs))
(expand-body (expand-body
(append result (reverse expanded-exprs)) (append (reverse expanded-exprs) result)
(cdr exp) (cdr exp)
env))) env)))
;; TODO: test concept of expanding/splicing begin here ;; TODO: test concept of expanding/splicing begin here
@ -59,14 +60,9 @@
(tagged-list? 'macro (env:lookup (caar exp) env #f))) (tagged-list? 'macro (env:lookup (caar exp) env #f)))
(let ((expanded (macro:expand (car exp) (env:lookup (caar exp) env #f) env))) (let ((expanded (macro:expand (car exp) (env:lookup (caar exp) env #f) env)))
(write `(DEBUG ,(cons expanded (cdr exp)))) (write `(DEBUG ,(cons expanded (cdr exp))))
;; TODO: not enough to recursively call expand-body with commented-out code.
;; maybe the thing that was missing is that still need to call inner-expand to
;; expand macros within????
(expand-body (expand-body
(cons result
(inner-expand expanded env) (cons expanded (cdr exp))
result) ;; TODO: result?
(cdr exp) ;(cons expanded (cdr exp))
env))) env)))
(else (else
(expand-body (expand-body