Blob


1 (define (make-table)
2 (define local-table '())
3 (define make-record cons)
4 (define key-record car)
5 (define value-record cdr)
6 (define (make-tree entry left right)
7 (list entry let right))
8 (define entry car)
9 (define left-branch cadr)
10 (define right-branch caddr)
11 (define key=? equal?)
12 (define (list<? l1 l2)
13 (andmap key<? l1 l2))
14 (define (key<? key1 key2)
15 (cond ((and (string? key1)
16 (string? key2)) (string<? key1 key2))
17 ((and (number? key1)
18 (number? key2)) (< key1 key2))
19 ((and (char? key1)
20 (char? key2)) (char<? key1 key2))
21 (else (error "Unsupported key types -- KEY<?" key1 key2))))
22 (define (element-of-set? x set)
23 (cond ((null? set) false)
24 ((key=? (key-record x) (key-record (entry set))) true)
25 ((key<? (key-record x) (key-record (entry set)))
26 (element-of-set? x (left-branch set)))
27 (else
28 (element-of-set? x (right-branch set)))))