On Apr 23, 2012, at 3:18 PM, Stefan Holdermans wrote: > Sjoerd, > >> This is not just about map, but it also a problem for the Monoid instance. >> You are basically adding an extra identity element, 0, to the max monoid, >> which works but is weird. > > Still that's how union is typically defined for hybrid sets. It's what > happens if want union and empty to behave as generalisations of these > concepts for ordinary (multi)sets.
Then why would you want that? > *Data.SignedMultiset> let empty' = insert () $ delete () empty > > *Data.SignedMultiset> empty' `union` delete () empty == empty' > False > > *Data.SignedMultiset> empty `union` delete () empty == delete () empty > True Ah, I missed the check in insertMany. What about the same with let empty' = multiply 0 $ delete () empty greetings, Sjoerd _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe