[Python-Dev] Suirprise!

Paul Prescod paulp@ActiveState.com
Sun, 22 Apr 2001 16:52:43 -0700


"Barry A. Warsaw" wrote:
> 
>...
> >>>>> "PP" == Paul Prescod <paulp@ActiveState.com> writes:
> 
>     PP> It looks like dubious hypergeneralization to me! <0.7 wink>
>     PP> Seriously, does this "feature" ever make sense to apply to the
>     PP> in operator?
> 
> I don't know; I wonder if "normal" people think of `in' as a chainable
> comparison operator or not.  

If Tim, Guido, you and I are so completely out of sync with normal
people that they will immediately intuit what we had to think hard
about, we're in deep doo-doo!

> You're not suggesting to change this are
> you?

I suggest a compile-time warning and then eventually we would make "in"
non-chainable. Perhaps it should even have a different precedence than
the other comparison operators. Tim's example looks reasonable to me:

assert k in d1 == k in d2

And it would never, ever make sense to say:

assert k in (d1==k) in d2

So why not interpret it the way that any normal human would:

assert (k in d1) == (k in d2)

I think that this is a subtle flaw in Python that just took a long time
to manifest itself...

And what about "1 is None == 2 is None"? If you saw that in a program
(last week!) what would you have expected it to evalute to? Precedence
levels exist to make code easier to read!
-- 
Take a recipe. Leave a recipe.  
Python Cookbook!  http://www.ActiveState.com/pythoncookbook