Some syntactic sugar proposals
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Tue Nov 16 05:42:39 EST 2010
On Mon, 15 Nov 2010 22:40:00 -0700, Ian Kelly wrote:
> On 11/15/2010 10:26 PM, Steven D'Aprano wrote:
>> t = foo()+bar()+baz() if pred(it) else baz()-foo()-bar()
>>
>> What does "it" mean here?
>
> "it" would mean the result of the expression foo()+bar()+baz(). What
> else could it mean?
It could mean the last expression, baz(). Or the entire compound
expression, foo()+bar()+baz().
> There are valid objections to the proposal, but the
> intended semantics seem perfectly clear.
Fair point, my example was terrible and didn't show the point that was
clear in my head. Mea culpa. How about this instead?
t = foo()+it if pred(it) else bar()
Should that be a SyntaxError, or is `it` a variable that holds its value
from statement to statement?
t = it
t = (foo() if pred(it) else bar()) if cond(it) else baz()
For what it's worth, Apple's defunct Hypertalk language had a couple of
syntax elements very much like that. Hypertalk had a special variable,
"it", which you used like this:
get the number of cards
put it into field "Card number"
I trust I don't have to explain this? :)
Hypertalk also had a special function, "the result", which worked
something like this:
ask "This is a dialog box. Please type your answer here:"
put the result into field "Your answer"
(or you could use "result()" instead). Both of these worked quite well
with Hypertalk, particularly with it's focus on non-programmers, but they
were designed into the language from the beginning. In Python they would
be the proverbial round peg in a square hole.
BTW, I frequently use "it" for iterators, and making "it" a reserved word
would break a lot of my code. This would make me quite peeved.
--
Steven
More information about the Python-list
mailing list