1 (defun union-set (set1 set2)
6 (element-of-set? x set1))
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)
14 (intersection-multiset (cdr set1) set2)))
15 (t (intersection-multiset (cdr set1) set2))))
16 (defun adjoin-multiset (x set)
18 (defun union-multiset (set1 set2)
21 (defun adjoin-set (x set)
22 (cond ((null set) (cons x '()))
23 ((< x (car set)) (cons x 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)
32 (cons x1 (union-set (cdr set1) (cdr set2))))
34 (cons x1 (union-set (cdr set1) set2)))
36 (cons x2 (union-set set1 (cdr set2)))))))