
Of course the most *general* way requires an Eq constraint:
List.nub :: Eq a => [a] -> [a]
But there are better functions (already mentioned) with the less general Ord constraint. Int and String are instances of Ord. "some other user defined data type" probably is too, but if you mean "any other user defined data type", even Eq may not be satisfied, e.g.
data NotEvenEq a = FuncsNotEq (a->a)
The hammer you use depends on what you're hammering on. Dan Henning Thielemann wrote:
On Fri, 8 Feb 2008, news@lyra.net wrote:
Hallo!
Let's suppose I have a list [a,b,c,d,c,d]. I'd like to write a function that returns a new list without duplicates (in the example [a,b,c,d]). How can I do that? What is the most general way? I'd like to use the same function for a list of Int or String or some other user defined data type.
List.nub