On Apr 25, 2012, at 11:39 AM, Stefan Holdermans wrote:

> The union of two sets is typically defined as the smallest set that is a 
> superset of both the operands; this definition extends nicely for multisets 
> and hybrid sets [1,2,3].

[3] differs from [1] and [2] (and your implementation). [3] defines the union 
as h(u) = max(f(u), g(u)) where f, g and h are multiplicity functions. [4] does 
the same. But [2] says on page 352: "For binary union, take the maximum of 
nonzero multiplicities", and this is also what your implementation does. 
(Map.unionWith max does not do a max if the key is not in one of the maps, i.e. 
if one of the multiplicities is 0.)

> I do not recall claiming maximisation to be "natural"; what's natural for one 
> application, may not be for another. The library provides both union (based 
> on maximisation) and additive union, and furthermore gives Monoid instances 
> over both of them. Not having a preference for either one of them, I thought 
> that having both of them in the library made sense.
> 
> That said, my goal was never to upload a package that only leads to confusion 
> and false expectations. As the common opinion seems to be that a maximising 
> union is bad, I will drop it from the library and deprecate the package on 
> Hackage.


I think if your union would follow the definition with max as in [3] and [4] it 
is not confusing. But then empty would not be the identity of that union (that 
would be the signed multiset with multiplicity negative infinity for all 
elements), so it would still not be a good choice for the Monoid instance.

greetings,
Sjoerd

> [1] Wayne D. Blizard: Multiset Theory. Notre Dame Journal of Formal Logic 
> 30(1): 36-66 (1989)
> [2] Wayne D. Blizard: Negative Membership. Notre Dame Journal of Formal Logic 
> 31(3): 346-368 (1990)
> [3] Apostolos Syropoulos: Mathematics of Multisets. WMP 2000: 347-358
[4] A Cavalcanti: Theoretical Aspects of Computing


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to