[Python-ideas] Where-statement (Proposal for function expressions)
MRAB
python at mrabarnett.plus.com
Fri Jul 17 15:09:23 CEST 2009
Greg Ewing wrote:
> Jan Kaliszewski wrote:
>
>> while foo(x) and bar() where:
>> foo = SOMETHING
>> def bar():
>> SOMETHING ELSE
>> do:
>> THE
>> LOOP
>> BODY
>
> That's kind of clever, although it does require
> modifying the while-loop syntax, and if you're
> doing that, there's not a lot of gain over
> introducing a dedicated loop-and-a-half syntax.
>
> Also, once we're allowed 'where' clauses on
> while statements, people are going to want them
> on other kinds of statements as well:
>
> if a == b where:
> a = foo()
> b = blarg()
> then:
> ...
>
> class Ham(Spam) where:
> class Spam:
> ...
> is:
> ...
>
> def f(x = default) where:
> default = whatever
> as:
> ...
>
> try:
> ...
> except eels where:
> eels = something_bad()
> do:
> ...
>
> Where do we stop?
>
>> while foo(x) and bar():
>> where:
>> foo = SOMETHING
>> def bar():
>> SOMETHING ELSE
>> THE
>> LOOP
>> BODY
>
> I think I liked the first version better. There's
> something jarring about the unindent half way
> through without any keyword to mark the boundary.
> Also the bare 'where' relating to the previous line
> suggests some weird grammatical gymnastics going
> on.
>
"do" might be a sufficiently generic word to cover all the cases.
while ... where:
...
do:
...
if a == b where:
...
do:
...
etc.
More information about the Python-ideas
mailing list