Symmetric difference for Set and IntSet

Bardur Arantsson spam at
Thu Jun 18 21:42:33 UTC 2020

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` (, 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.

More information about the Libraries mailing list