Should you actually be able to make a set {3,2,3,1,1}. The definition of a set is that every element must be unique. For all purposes it stores it as {3, 2, 1} since its difference with {2} is {3, 1} and not {3, 3, 1, 1} except when you want equality. Is there a reason that set does not do the unique on itself. It seems that these are kind of a hybrid between sets and multisets, you would have to make new functions for the difference if you wanted the multiset functionality.