Initial support for (import) in eval

This commit is contained in:
Justin Ethier 2017-03-23 18:53:24 -04:00
parent 0cbcadc382
commit a36d68a323

View file

@ -375,6 +375,9 @@
(not (null? (cdr exp))))
(analyze-lambda exp env))
((tagged-list? 'import exp)
(analyze-import exp env))
;; experimenting with passing these back to eval
((compound-procedure? exp)
(lambda (env) exp)) ;; TODO: good enough? update env?
@ -432,6 +435,13 @@
; ;(lambda (env)
; (make-macro `(lambda ,vars ,@(lambda-body exp)))))
(define (analyze-import exp env)
(lambda (env)
;; TODO: allow %import to take env
(write `(%import ,(cdr exp)))
(apply %import (cdr exp))
'ok))
(define (analyze-if exp a-env)
(let ((pproc (analyze (if-predicate exp) a-env))
(cproc (analyze (if-consequent exp) a-env))