Securing a future for anonymous functions in Python

Michael Spencer mahs at telcopartners.com
Thu Dec 30 13:02:14 EST 2004


Nick Coghlan wrote:
> GvR has commented that he want to get rid of the lambda keyword for 
> Python 3.0. Getting rid of lambda seems like a worthy goal, but I'd 
> prefer to see it dropped in favour of a different syntax, rather than 
> completely losing the ability to have anonymous functions.
> 
> Anyway, I'm looking for feedback on a def-based syntax that came up in a 
> recent c.l.p discussion:
> http://boredomandlaziness.skystorm.net/2004/12/anonymous-functions-in-python.html 
...
The proposed syntax is:
> accepts_func((def (a, b, c) to f(a) + g(b) - h(c)))
...
> 
> Cheers,
> Nick.
> 
 From the blog Comments:
Nick said...
> 
>     A potentially easier to parse version moves the argument list to the end of the anonymous function and uses the existing keyword 'from'. That is:
> 
>     (def f(a) + g(b) - h(c) from (a, b, c))
>     11:46 PM   
> 
> Post a Comment



This alternative syntax seems more elegant to me because of the similarity with 
  generator expressions.  But the 'def' still seems awkward.

<Idle speculation>

Isn't the important point that the arguments have delayed evaluation?  If so, 
the syntax could highlight this instead: i.e.,

     (f(a) + g(b) - h(c) from args(a, b, c))

and, in general:

     (expression from args(a, *args, **kw))

while we're at it, perhaps 'for' would be more appropriate:

     (expression for args(a, *args, **kw))



I also wonder if a callable, args, that stored its argument list for delayed 
evaluation would have other applications besides anonymous functions, but that 
is another topic

</Idle speculation>

Michael Spencer













More information about the Python-list mailing list