better lambda support in the future?

Jeff Shannon jeff at ccvcorp.com
Fri Dec 17 18:29:25 EST 2004


Steven Bethard wrote:

> Jason Zheng wrote:
>
>> The true beauty of lambda function is not the convenience of creating 
>> functions without naming them. Lambda constructs truly enables 
>> higher-order function. For example, I can create a function A that 
>> returns a function B that does something interesting according to the 
>> arguments that I pass to function A.
>
>
> But you don't need lambdas to do this.  In fact, even in your email, 
> you'll note that you referred to your two functions by name.  If 
> you're naming functions, why not use a def statement?


It occurs to me that, in a statically compiled language, function 
definitions all happen before the program starts, and thus that 
definition can't be affected by other variables (i.e. an outer 
function's parameters).  In such statically compiled language, a lambda 
would be very useful simply because it's a *dynamic* function.  Of 
course, in Python *all* functions are created dynamically, therefore 
(unlike most other languages) the majority of the benefits of lambdas 
already apply to standard Python functions. 

In the couple of years that I've been puzzling over why some people were 
so fixated upon lambdas as being essential, this hasn't occurred to me 
before.  They really provide scant benefit in Python (which is why I was 
puzzled by the devotion to them), but they *do* provide a large benefit 
in other languages.  It is, however, quite easy to miss that this 
relative weakness of Python lambdas is a direct consequence of the fact 
that a function def is an executable statement rather than a 
compilation-time declaration. 

Jeff Shannon
Technician/Programmer
Credit International




More information about the Python-list mailing list