On Tue, Dec 15, 2020 at 04:15:52PM +0000, David Mertz wrote:

> It feels like a chimp trying to pantomime a philosopher, really.  As
> someone with a doctorate in philosophy, I feel triggered :-).

Quoting "A Fish Called Wanda":

    Otto: Apes don't read philosophy.
    Wanda: Yes they do, Otto, they just don't understand it.

Although I don't think that Paul is a Nietzsche-quoting ex-CIA hired 
killer. At least I hope not.

In fairness, Paul has a lot of interesting ideas, even if they don't 
always pan out. But this thread is an excellent example of how *not* to 
engage and persuade an audience:


- long and rambling, slow to get to the point;

- expecting the readers to make the same "Aha!" moment you did when
  you could just explicitly state your observation;

- patronising statements that your readers are just a step away from 
  getting the right answer, but will they make it?

- repeated hints that you have seen the correct answer and reached 
  enlightenment, without telling the reader what the answer is;

- comparisons and analogies that don't work;
  (under Python semantics, the closest analogy to `(obj.method)()`
  is not `a+(b+c)` but `(a+b)+c`)


Paul, if you are reading this, you are coming across as neuro-atypical. 
If that is the case, trust me on this, the strategy you are taking in 
this thread is very unsuccessful as a persuasive and/or teaching tool.

Under existing Python semantics, round brackets (parentheses) have a few 
different meanings, but the relevant one as far as I can tell is 
grouping, which changes the order that operations are performed.

In expressions, I don't think that there are any cases where brackets 
change the semantics of operations: `(b + c)` remains the plus operator 
even with the brackets, it just changes the order of operation relative 
to any surrounding expression.

The only counter-example I can think of where brackets changed the 
semantics of a statement was the old Python 2 `except ...` statement:

    except A, B, C, D:
        block

    except (A, B, C, D):
        block

If I recall correctly, the first catches exceptions A, B and C, and 
binds the exception to D; the second catches exceptions A, B, C and D 
and doesn't bind to anything.

As you can imagine, this was an extremely error-prone and surprising 
"Gotcha".

In principle, we could give `(obj.method)()` a distinct meaning to the 
unbracketed form. But such a distinction would be surprising, it would 
clash with grouping:

    (obj.method or fallback_function)()

and I have no idea what distinct meaning you want to give it, or why. If 
you are serious about continuing this thread, please get to the point of 
*what* change in semantics you want to give the bracketed form and *why* 
you think it would be useful.



-- 
Steve
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/B7FFM2NZO6IERCNXOER5ULVKI7BERXLR/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to