[Python-ideas] Where-statement (Proposal for function expressions)
Carl Johnson
cmjohnson.mailinglist at gmail.com
Thu Jul 16 01:12:17 CEST 2009
Daniel Stutzbach wrote:
> Unlikely, but this is:
>
> total =3D sum(f(item) for item in lst) where:
> def f(item):
> return item.size if item.size > 0 else 1
Yes, that seems much more sensible than trying to repeat the where's
inside of list comp or gen exp.
Daniel Stutzbach wrote:
> How about the following as additional syntactic sugar for the common one-=
function case?
>
> x =3D blah(f) where def f(item):
> body_of_f
I like it.
Gerald Britton wrote:
> Why not just use the Haskell approach?
>
> foo(x,y) =3D myfunc(bar) where:
> =A0 =A0 =A0 =A0 =A0 myfunc, bar =3D f(x), g(y) where:
> =A0 =A0 =A0 =A0 =A0 =A0 =A0f,g =3D func1, func2
Because I've been looking at that for a couple minutes and still have
no idea what it is supposed to mean. :-( List comprehensions and
pattern matching are the only Haskell features that make any sense to
me.
Jan Kaliszewski wrote:
> I don't like the direction of limiting content of the block to set of sin=
gular simple statements. I suppose where-block should simply create a separ=
ate nested scope.
Yes. It strikes me that one of the problems with Ruby is that there
are different scoping rules for blocks, lambda, methods, procs, and
whatever else=85 It would be much easier for users if "where" blocks had
the exact same scoping rules as functions. Daniel Stutzbach's
suggested equivalence strikes me as exactly correct:
[return|yield|x=3D] expression_list where:
suite
is roughly equivalent to:
def where_expression():
suite
return expression_list
[return|yield|x=3D] where_expression()
-- Carl Johnson
More information about the Python-ideas
mailing list