
On 17/06/2020 21.25, Andrew Lelechenko wrote:
Hi all,
I propose to add a new combining function to `Data.Set` and `Data.IntSet` with the following semantics (but better implementation):
symmetricDifference :: Set a -> Set a -> Set a symmetricDifference x y = (x \\ y) <> (y \\ x)
The context is that Federico (CC'ed) is working on a GSoC project about faster factorisation algorithms in `arithmoi` (http://hackage.haskell.org/package/arithmoi), and the symmetric difference is a basic building block for sparse linear algebra over GF(2) field.
+½. I think it's probably going to be useful, but I would suggest an algorithm which actually returns each of the terms here (as a tuple), i.e. The "added" bits The "removed" bits The "common" bits This may not be *that* useful for sets per se, but I've lost count of how often I've had to implement a similar thing for maps.