Skip to content

Commit 44f7da0

Browse files
committed
more efficient eval update
1 parent c32133b commit 44f7da0

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

src/eval/eval-base.scm

Whitespace-only changes.

src/eval/eval1.scm

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
; a more efficient eval
2+
3+
(define (seck-eval exp env)
4+
((analyze exp) env))
5+
6+
(define (analyze exp)
7+
(cond ((self-evaluating? exp)
8+
(analyze-self-evaluating exp))
9+
((quoted? exp) (analyze-quoted exp))
10+
((variable? exp) (analyze-variable exp))
11+
((assignment? exp) (analyze-assignment exp))
12+
((definition? exp) (analyze-definition exp))
13+
((if? exp) (analyze-if exp))
14+
((lambda? exp) (analyze-lambda exp))
15+
((begin? exp) (analyze-sequence (begin-actions exp)))
16+
((cond? exp) (analyze (cond->if exp)))
17+
((application? exp) (analyze-application exp))
18+
(else
19+
(error 'analyze "unknown expression type" exp))))
20+
21+
(define (analyze-self-evaluating exp)
22+
(lambda (env) exp))
23+
24+
(define (analyze-quoted exp)
25+
(let ((qval (text-of-quotation exp)))
26+
(lambda (env) qval)))
27+
28+
(define (analyze-quoted exp)

0 commit comments

Comments
 (0)