On Aug 1, 2019, at 13:38, Daniel Okey-Okoro <danielokeyok...@gmail.com> wrote:
> 
> 
> > not a strong enough justification for breaking any code that uses "no" in 
> > any other way.
> 
> This is a very crucial point I didn't consider.
> 
> ------------------------------------------------------------
> 
> What if we could lexically limit it to `if no {{everything else in the if 
> block}}`?
> 
> I think that would sufficiently protect us from unintentionally breaking 
> people's code.

There are some cases where a “contextual keyword” that’s usable as an 
identifier outside of a specific syntactic construct could avoid ambiguity, but 
this isn’t one of them, because the thing immediately after the `if` in an if 
statement can be–and often is—an identifier. For example:

    total = len(votes)
    yes, no, other = (len(part) for part in partition_votes(votes))

    if no >= total//2:
        # etc.

I even found an actual example of the equivalent in some C++ code I had on my 
hard drive:

    if (no == ask(…)) { 
        // …
    }

In Python, that would be:

    if no == ask(…):

Also, even if that weren’t a problem, this would be very misleading syntax. If 
I can write `if no sales:` I’d expect to be able to write `if isopen and no 
sales:` or `0 if no sales else mean(sales)` or `skip = no sales` or any of the 
other things I can do with `not` and other operators rather than special syntax.

Also, I could still write `if no sales and isopen:`, but it would do the wrong 
thing if `no` is special syntax that reverses the sense of the `if` rather than 
a normal operator that binds more tightly than `and`.


-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to