# DeleteDuplicates not deleting duplicates

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 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 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 at 17:41
(Sigh) @Albert Retey, I forgot your country of origin... – Daniel Lichtblau Jan 23 at 17:44
Meta question: If this question ever gets a duplicate, will we be able to delete it? – Daniel Lichtblau Jan 23 at 18:27

As @Albert Retey remarked in a comment, a second argument of (just) Equal leads to a special case handler that, to me, seems overly ambitious. I reported it as a bug.

-
+1 but... raking in rep for confirming bugs may be the wrong incentive, WRI-wise? :-P – Yves Klett Jan 24 at 9:58
My strategy has been to fix bugs/implement features, remain silent for weeks/months, and then miss the rep uptick when the new version ships because sleep started to look better than beating out intrepid explorers for reputation. Maybe I should rethink that... :) – John Fultz Jan 24 at 11:37
@Yves Klett I'm as confused as you. Meanwhile other responses take real work and get maybe 2 upvotes. – Daniel Lichtblau Jan 24 at 15:13
If the rep implications bother you, you can make the answer community wiki. Then we do have an answer (the question is off the unanswered list) and no one can argue about the rep gain. (Personally I do not care about rep score any more, either about my own or about others') – Szabolcs Mar 25 at 20:23
@Szabolcs How do I make it community wiki? – Daniel Lichtblau Mar 25 at 20:27
show 1 more comment

You need to use :

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

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