A critic of Guido's blog on Python's lambda

Bill Atkins NOatkinwSPAM at rpi.edu
Sat May 6 21:49:19 EDT 2006


I V <wrongbad at gmail.com> writes:

> On Sat, 06 May 2006 21:19:58 -0400, Bill Atkins wrote:
>> There are also cases where a function is so trivial that the simplest
>> way to describe it is with its source code, where giving it a name and
>> putting it at the beginning of a function is just distracting and
>> time-consuming.  E.g.:
>> 
>>   (remove-if (lambda (name)
>>                (find #\- name :test #'char=))   
>>              list-of-names)
>> 
>> What's the sense of giving that function its own name?  It's much
>> clearer to simply write it in place.  Yes, it's _possible_ to use
>> named functions, but in this case its functionality is so simple that
>> it's clearer to simply type it in place.  Why is this expressiveness a
>> bad thing, aside from its power to wreck an indentation-significant
>> language?
>
> Well, you can do that with python's current,
> non-indentation-significance-wrecking, lambda syntax, so I don't think
> that's a particularly persuasive example. Note also that the only
> limitation python has on where you can define functions is that you can't
> define them inside expressions (they have to be statements), so you could
> define a named function right before the call to remove-if, which removes
> some of the advantage you get from the lambda (that is, the function
> definition is not very far from when it's used). 
>
> Actually, I think the limitation on python that is operative here is not
> significant whitespace, but the distinction between statements and
> expressions.
>
> (crossposts trimmed)

You're right, I was replying to Alex's assertion that "there is
nothing useful I can do with anonymous functions that I cannot do with
named ones."

-- 
This is a song that took me ten years to live and two years to write.
 - Bob Dylan



More information about the Python-list mailing list