From a36d68a323909436a8ad7e48f7ba8fafb9a5a54d Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Thu, 23 Mar 2017 18:53:24 -0400 Subject: [PATCH] Initial support for (import) in eval --- scheme/eval.sld | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scheme/eval.sld b/scheme/eval.sld index c49da8a9..a15c771e 100644 --- a/scheme/eval.sld +++ b/scheme/eval.sld @@ -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))