containers: symmetricDifference for Set and HashSet
Ben Franksen
ben.franksen at online.de
Tue Dec 1 09:16:43 UTC 2020
Would it make sense to add a function like the following to containers:
symmetricDifference :: Set a -> Set a -> (Set a, Set a, Set a)
symmetricDifference a b = (a \\ b, a `intersection` b, b \\ a)
with the idea that this can be implemented more efficiently as a
primitive than the above specification? (And similarly for HashSet.)
If this is the case, then perhaps difference and intersection could be
defined in terms of this new primitive:
difference a b = let (r, _, _) = symmetricDifference in r
intersection a b = let (_, r, _) = symmetricDifference in r
*if* it turns out that this does not degrade performance.
Cheers
Ben
More information about the Libraries
mailing list