On Apr 24, 2018, at 2:10 PM, MRAB <pyt...@mrabarnett.plus.com> wrote:
>
> On 2018-04-21 03:15, Tim Peters wrote:
>> [Tim]
>> >> And I'll take this opportunity to repeat the key point for me: I
>> >> tried hard, but never found a single case based on staring at real
>> >> code where allowing _fancier_ (than "plain name") targets would be a
>> >> real improvement. In every case I thought it _might_ help, it turned
>> >> out that it really didn't unless Python _also_ grew an analog to C's
>> >> "comma operator" (take only the last result from a sequence of
>> >> expressions). I'll also note that I asked if anyone else had a
>> >> real-life example, and got no responses.
>>
>> [MRAB <pyt...@mrabarnett.plus.com>]
>> > Could a semicolon in a parenthesised expression be an equivalent to C's
>> > "comma operator"?
>>
>> I expect it could, but I it's been many years since I tried hacking
>> Python's grammar, and I wouldn't want a comma operator anyway ;-)
> [snip]
> Just reading this:
>
> https://www.bfilipek.com/2018/04/refactoring-with-c17-stdoptional.html
>
> about C++17, and what did I see? An example with a semicolon in parentheses!
A similar pattern shows up in Go's if statement syntax. It is interesting to
note that it is part of the grammar specifically for the if statement and *not*
general expression syntax.
IfStmt = "if" [ SimpleStmt ";" ] Expression Block [ "else" ( IfStmt | Block
) ] .
Bindings that occur inside of `SimpleStmt` are only available within the
`Expression` and blocks that make up the if statement.
https://golang.org/ref/spec#If_statements
This isn't a good reason to parrot the syntax in Python though. IMO, I
consider the pattern to be one of the distinguishing features of golang and
would be happy leaving it there.
I have often wondered if adding the venerable for loop syntax from C (and many
other languages) would solve some of the needs here though. The for loop
syntax in golang is interesting in that it serves as both a standard multipart
for statement as well as a while statement.
Changing something like this is more of a Python 4 feature and I think that I
would be -0 on the concept. I did want to mention the similarities for the
posterity though.
ChrisA - we might want to add explicit mentions of golang's if statement and
for loop as "considered" syntaxes since they are in a sibling programing
language (e.g., similar to async/await in PEP 492).
- dave
--
"Syntactic sugar causes cancer of the semicolon" - Alan Perlis
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com