Semantics of ==

Axel Boldt axelboldt at yahoo.com
Fri Mar 26 14:45:53 CET 2004


Erik Max Francis <max at alcyone.com> wrote

> What part of the semantics are you unclear about?  Two sequences are
> equal if they are element-wise equal.

That definition is circular.

> That is the definition that people rely on, 

Yes.

> that's the definition that the interpreter uses,

No.

> and that definition is even consistent with the behavior you saw with the
> self-referencing lists which for some reason surprised you.

Yes, s==w is consistent with the definition, but s!=w would also have
been consistent with it.

Consider for instance the following definition: 
* all strings and numbers are called "well-founded"
* a list is called well-founded if and only if all its elements are
well-founded.

l=[]
l.append(l)
Is l well-founded? Both answers "yes" and "no" are consistent with the
above definition. If you write a program to determine whether a given
list is well-founded, it will run into an infinite loop. Similarly, if
you try to write a program implementing the above simple-minded
definition of list-equality, it'll run into an infinite loop. Since
Python does not run into an infinite loop, it must use a different
definition.

Axel



More information about the Python-list mailing list