containers: symmetricDifference for Set and HashSet

Ben Franksen ben.franksen at online.de
Tue Dec 1 09:33:57 UTC 2020


Thanks David!

I wasn't aware this has been discussed before, though I should have
expected it, given that the idea seems pretty obvious.

BTW, something similar may be possible for Map and HashMap by adding an
extra parameter that tells it how to combine values in the intersection.

Cheers
Ben

Am 01.12.20 um 10:18 schrieb David Feuer:
> This has been raised before. I'm going to try to look at implementation
> within the next week or so.
> 
> On Tue, Dec 1, 2020, 4:17 AM Ben Franksen <ben.franksen at online.de> wrote:
> 
>> 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
>>
>> _______________________________________________
>> Libraries mailing list
>> Libraries at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>
> 
> 
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
> 




More information about the Libraries mailing list