[Python-Dev] Recommend accepting PEP 312 -- Simple Implicit Lambda
Kay Schluehr
kay.schluehr at gmx.net
Sun Jun 19 17:22:47 CEST 2005
Skip Montanaro wrote:
> >> As I see it, a lambda is an anonymous function. An anonymous function
> >> is a function without a name. We already have a syntax for a
> >> function... why not use it. ie:
> >>
> >> f = filter(def (a): return a > 1, [1,2,3])
>
> Kay> You mix expressions with statements.
>
> You could remove the "return" and restrict the body of the def to an
> expression:
>
> f = filter(def (a): a > 1, [1,2,3])
>
> That looks almost exactly like a lambda, but uses "def" and parenthesizes
> the argument list. It seems to me that would remind people "this is a
> function".
Yes, but skipping the name of a function ( anonymizing it ) is not a
strong reason to disallow statements in the anonymus function body. The
crucial issue is the notation of callable expressions that are not
statements but can be defined inside of other expressions ( e.g. inside
a filter() call as in the example ). That's why I prefer notations that
emphasize the expression character. Using the arrow notation
( (args) -> expr ) would be fine for me but I would not deselect Python
in favor for Java if ( expr from (args) ) is used instead. To me it's a
"judean popular front" vs "popular front of judea" kind of thing.
Kay
More information about the Python-Dev
mailing list