]> git.rkrishnan.org Git - sicp.git/blob - src/sicp/ch3_3_3_1d.rkt
Solution to 4.44. A bit too verbose. Can be improved by better
[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*))