Blame


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