Blob


1 (define (element-of-set? x set)
2 (cond ((null? set) false)
3 ((= x (car set)) true)
4 ((< x (car set)) false)
5 (else (element-of-set? x (cdr set)))))
6 (define (intersection-set set1 set2)
7 (if (or (null? set1) (null? set2))
8 '()
9 (let ((x1 (car set1)) (x2 (car set2)))
10 (cond ((= x1 x2) (cons x1 (intersection-set (cdr set1) (cdr set2))))
11 ((< x1 x2) (intersection-set (cdr set1) set2))
12 ((< x2 x1) (intersection-set set1 (cdr set2)))))))
13 (define (adjoin-set x set)
14 (cond ((null? set) (cons x '()))
15 ((= x (car set)) set)
16 ((< x (car set)) (cons x set))
17 ((> x (car set)) (cons (car set)
18 (adjoin-set x (cdr set))))))
19 (define (union-set set1 set2)
20 (cond ((null? set1) set2)
21 ((null? set2) set1)
22 ((= (car set1) (car set2))
23 (cons (car set1) (union-set (cdr set1) (cdr set2))))
24 ((< (car set1) (car set2))
25 (cons (car set1) (union-set (cdr set1) set2)))
26 (else (cons (car set2) (union-set set1 (cdr set2))))))