diff --git a/eval.scm b/eval.scm index d1effaf0..248f3811 100644 --- a/eval.scm +++ b/eval.scm @@ -35,6 +35,9 @@ (define (quoted? exp) (tagged-list? exp 'quote)) +(define (quasiquoted? exp) + (tagged-list? exp 'quasiquote)) + (define (assignment? exp) (tagged-list? exp 'set!)) (define (assignment-variable exp) (cadr exp)) @@ -352,6 +355,7 @@ (cond ((self-evaluating? exp) (analyze-self-evaluating exp)) ((quoted? exp) (analyze-quoted exp)) + ((quasiquoted? exp) (analyze-quasiquoted exp)) ((variable? exp) (analyze-variable exp)) ((assignment? exp) (analyze-assignment exp)) ((definition? exp) (analyze-definition exp)) @@ -389,6 +393,9 @@ (let ((qval (cadr exp))) (lambda (env) qval))) +(define (analyze-quasiquoted exp) + (error "quasiquote not supported yet by eval")) + (define (analyze-variable exp) (lambda (env) (lookup-variable-value exp env)))