[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