# DeleteDuplicates not deleting duplicates

Bug introduced in 9.0 and fixed in 10.0.0

It is not surprising that DeleteDuplicates[{5,5.}] returns {5,5.} because DeleteDuplicates uses SameQ by default, and SameQ[5,5.] is False.

However, Equal[5,5.] is True, but DeleteDuplicates[{5,5.},Equal] still returns {5,5.}.

It is interesting to note that Union works properly, in that Union[{5,5.},SameTest->Equal] returns {5}, as expected.

Is this a bug, or am I missing something? I'm using version 9.

Update:

I realize that using the function #1==#2& will get it working, thanks for pointing this out.

However, my question really is "Is this a bug, or am I missing something?".

To illustrate this further, consider the following:

f[x__]:=Equal[x]
DeleteDuplicates[{5,5.},f]
(* {5} *)


In what capacity are f and Equal different? Or what is leading DeleteDuplicates to treat them differently? They both take an arbitrary number of inputs, which is what I originally thought was the problem.

• I'm reporting this as a bug. – Daniel Lichtblau Jan 23 '13 at 17:24
• But @Albert Retey, are you saying that you won't believe me in a comment, but you will in an answer? – Daniel Lichtblau Jan 23 '13 at 17:40
• ... it might also be of interest that this behavior is new to version 9, version 7 and 8 give the "expected" result... – Albert Retey Jan 23 '13 at 17:41
• (Sigh) @Albert Retey, I forgot your country of origin... – Daniel Lichtblau Jan 23 '13 at 17:44
• Meta question: If this question ever gets a duplicate, will we be able to delete it? – Daniel Lichtblau Jan 23 '13 at 18:27

DeleteDuplicates[{5, 5.}, Equal[#1, #2] &]

• Something like Unevaluated@Identity@Equal will work a bit faster I think – Rojo Jan 23 '13 at 22:03