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))
9 (define left-branch cadr)
10 (define right-branch caddr)
12 (define (list<? l1 l2)
14 (define (key<? key1 key2)
15 (cond ((and (string? key1)
16 (string? key2)) (string<? key1 key2))
18 (number? key2)) (< key1 key2))
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)))
28 (element-of-set? x (right-branch set)))))