Fix set-symmetric-difference when passed the same set multiple times.

Closes #1403.
This commit is contained in:
Vincent St-Amour 2016-08-03 13:02:14 -05:00
parent b3b16b36a1
commit 4716a6eb00
2 changed files with 4 additions and 2 deletions

View File

@ -139,6 +139,9 @@
'set-symmetric-difference/list 'set-symmetric-difference/list
'(1 3)) '(1 3))
(test #t equal? (set) (let ([a (set 1 2 3)]) (set-symmetric-difference a a)))
(test #t equal? (set) (let ([a (set 1 2 3)] [b (set 1 2 3)]) (set-symmetric-difference a b)))
(let ([s (set 1 2 3)]) (let ([s (set 1 2 3)])
(test #t equal? s (set-add (set-add (set-add (set) 1) 2) 3)) (test #t equal? s (set-add (set-add (set-add (set) 1) 2) 3))
(test #t equal? (seteq 1 2 3) (seteq 1 2 3)) (test #t equal? (seteq 1 2 3) (seteq 1 2 3))

View File

@ -186,8 +186,7 @@
s s
(for/fold (for/fold
([table (custom-set-table largest-immutable)]) ([table (custom-set-table largest-immutable)])
([s2 (in-list (cons s sets))] ([s2 (in-list (remove largest-immutable (cons s sets)))])
#:unless (eq? s2 largest-immutable))
(for/fold ([table table]) ([x (in-hash-keys (custom-set-table s2))]) (for/fold ([table table]) ([x (in-hash-keys (custom-set-table s2))])
(if (hash-ref table x #f) (if (hash-ref table x #f)
(hash-remove table x) (hash-remove table x)