[Python-Dev] Set data type

Ka-Ping Yee ping@lfw.org
Thu, 3 Feb 2000 19:55:49 -0600 (EST)


On Thu, 3 Feb 2000, David Ascher wrote:
> 
> I think you forgot one behavior:
> 
>       >>> t.append('Spam!')
>       >>> t.append('Spam!')
>       KeyError: set already contains value 'Spam!'

Mmmm... i don't think so.  I can't think of a situation in which
i would want to get this exception.  If i really cared i would
ask whether 'Spam!' in t.
 
> no?  FWIW, I don't like the use of the word 'append', which to me implies a
> serial order.  I'd use 'add', but that's a nit.

'append', 'add', 'insert', all okay with me.  I initially avoided
'add' due to possible confusion with + and __add__, and 'insert'
because list.insert took two arguments.  But, as i say, i wouldn't
be much bothered by any of these names.

> >         ((Side side side note: in E, Mark Miller also ran into the
> >         problem of spelling different kinds of "equals"es.  For
> >         object identity we have "is", for content comparison we
> >         have "==".  If we need a new operator for magnitude equality
> >         i suggest "<=>", as used in E.))
> 
> Isn't magnitude equality currently spelled len(a) == len(b)?

That's, uh, "size equality" (oh, i don't know, i'll make up the
terminology as i go along).  That's not the same as "<=>" if you
are going to allow arbitrary partial orderings.  I suppose it
depends how "arbitrary" we are willing to let them get -- a
"<=>" operator might turn out to be never needed, though it is
truly a third and different kind of equality.

    a <=> b       is equivalent to      a <= b and a >= b

(...hence the spelling.)


-- ?!ng