On Jan 16, 2004, at 6:05 AM, Andrzej Kozlowski wrote:
> The possibility of using Union for testing the presence or absence of
> duplicates is a side effect rather than the main purpose of Union.
>
Rather than arguing the behavior of Union[a] as being a side effect or
a short hand for Union[a,a] why not consider it a shorthand for
Union[a,{}] in which case there is no confusion. I suppose there is no
confusion in the case of Union[a,a] but it's hard to imagine why
someone would care about that expression in the first place. I am not
mathematically sophisticated though, so forgive me if I don't
understand the import of Union[a,a].
There is still the issue of the representation of a set in Mathematica
especially due to the unfortunate choice of {} as list delimiters.
From a programmer's point of view the mathematical object set is
probably best represented by a hash function which hashes all possible
patterns of bits, since ultimately a set can contain anything a
computer can represent, and a membership function which can tell
whether the hash value for a specific bit pattern is occupied for a
specific set. That's unwieldy in practice, and a sorted list is
probably sufficient, however since a hash only has the concept of
membership or nonmembership there is no idea of repetition of elements.
Thus the representation of sets as a list of unique elements
representing the members, sorting just helps with efficiency. It's not
a rigorous explanation, I'd be happy to hear what a proper
mathematician/computer scientist has to say on the subject, but I think
it explains the behavior of Union[a].
Regards,
Ssezi