Blob


1 (defun union-set (set1 set2)
2 (append
3 set1
4 (remove-if
5 (lambda (x)
6 (element-of-set? x set1))
7 set22)))
8 (defun element-of-multiset? (x set)
9 (member x set :test #'equal))
10 (defun intersection-multiset (set1 set2)
11 (cond ((or (null set1) (null set2)) '())
12 ((element-of-multiset? (car set1) set2)
13 (cons (car set1)
14 (intersection-multiset (cdr set1) set2)))
15 (t (intersection-multiset (cdr set1) set2))))
16 (defun adjoin-multiset (x set)
17 (cons x set))
18 (defun union-multiset (set1 set2)
19 (append set1 set2))
21 (defun adjoin-set (x set)
22 (cond ((null set) (cons x '()))
23 ((< x (car set)) (cons x set))
24 ((= x (car set)) set)
25 (t (cons (car set)
26 (adjoin-set x (cdr set))))))
27 (defun union-set (set1 set2)
28 (let ((x1 (car set1)) (x2 (car set2)))
29 (cond ((null x1) set2)
30 ((null x2) set1)
31 ((= x1 x2)
32 (cons x1 (union-set (cdr set1) (cdr set2))))
33 ((< x1 x2)
34 (cons x1 (union-set (cdr set1) set2)))
35 (t
36 (cons x2 (union-set set1 (cdr set2)))))))