- (num2 (sset-element-number e)))
- (loop
- (when (null el3)
- (loop
- (when (null el1)
- (setf (cdr prev-el1) (copy-list el2))
- (return-from sset-union-of-difference t))
- (let ((num1 (sset-element-number (car el1))))
- (when (>= num1 num2)
- (if (> num1 num2)
- (let ((new (cons e el1)))
- (setf (cdr prev-el1) new)
- (setq prev-el1 new changed t))
- (shiftf prev-el1 el1 (cdr el1)))
- (return))
- (shiftf prev-el1 el1 (cdr el1))))
- (return))
- (let ((num3 (sset-element-number (car el3))))
- (when (<= num2 num3)
- (unless (= num2 num3)
- (loop
- (when (null el1)
- (do ((el2 el2 (cdr el2)))
- ((null el2)
- (return-from sset-union-of-difference changed))
- (let* ((e (car el2))
- (num2 (sset-element-number e)))
- (loop
- (when (null el3)
- (setf (cdr prev-el1) (copy-list el2))
- (return-from sset-union-of-difference t))
- (setq num3 (sset-element-number (car el3)))
- (when (<= num2 num3)
- (unless (= num2 num3)
- (let ((new (cons e el1)))
- (setf (cdr prev-el1) new)
- (setq prev-el1 new changed t)))
- (return))
- (pop el3)))))
- (let ((num1 (sset-element-number (car el1))))
- (when (>= num1 num2)
- (if (> num1 num2)
- (let ((new (cons e el1)))
- (setf (cdr prev-el1) new)
- (setq prev-el1 new changed t))
- (shiftf prev-el1 el1 (cdr el1)))
- (return))
- (shiftf prev-el1 el1 (cdr el1)))))
- (return)))
- (pop el3))))))
+ (num2 (sset-element-number e)))
+ (loop
+ (when (null el3)
+ (loop
+ (when (null el1)
+ (setf (cdr prev-el1) (copy-list el2))
+ (return-from sset-union-of-difference t))
+ (let ((num1 (sset-element-number (car el1))))
+ (when (>= num1 num2)
+ (if (> num1 num2)
+ (let ((new (cons e el1)))
+ (setf (cdr prev-el1) new)
+ (setq prev-el1 new changed t))
+ (shiftf prev-el1 el1 (cdr el1)))
+ (return))
+ (shiftf prev-el1 el1 (cdr el1))))
+ (return))
+ (let ((num3 (sset-element-number (car el3))))
+ (when (<= num2 num3)
+ (unless (= num2 num3)
+ (loop
+ (when (null el1)
+ (do ((el2 el2 (cdr el2)))
+ ((null el2)
+ (return-from sset-union-of-difference changed))
+ (let* ((e (car el2))
+ (num2 (sset-element-number e)))
+ (loop
+ (when (null el3)
+ (setf (cdr prev-el1) (copy-list el2))
+ (return-from sset-union-of-difference t))
+ (setq num3 (sset-element-number (car el3)))
+ (when (<= num2 num3)
+ (unless (= num2 num3)
+ (let ((new (cons e el1)))
+ (setf (cdr prev-el1) new)
+ (setq prev-el1 new changed t)))
+ (return))
+ (pop el3)))))
+ (let ((num1 (sset-element-number (car el1))))
+ (when (>= num1 num2)
+ (if (> num1 num2)
+ (let ((new (cons e el1)))
+ (setf (cdr prev-el1) new)
+ (setq prev-el1 new changed t))
+ (shiftf prev-el1 el1 (cdr el1)))
+ (return))
+ (shiftf prev-el1 el1 (cdr el1)))))
+ (return)))
+ (pop el3))))))