]> git.rkrishnan.org Git - sicp.git/blob - src/sicp/ch3_3_3_1d.rkt
Lazy version of evaluator and tests.
[sicp.git] / src / sicp / ch3_3_3_1d.rkt
1 #lang r5rs
2
3 (define (lookup key table)
4   (let ((record (assoc key (cdr table))))
5     (if record
6         (cdr record)
7         #f)))
8
9 (define (assoc key records)
10   (cond 
11     ((null? records) #f)
12     ((equal? key (car (car records))) (car records))
13     (else (assoc key (cdr records)))))
14
15 (define (insert! key value table)
16   (let ((record (assoc key (cdr table))))
17     (if record
18         (set-cdr! record value)
19         (set-cdr! table
20                   (cons (cons key value) (cdr table)))))
21   'ok)
22
23 (define (make-table)
24   (list '*table*))