Alan Gauld <[EMAIL PROTECTED]> wrote: ... > It can't be that hard to maintain the lambda code, why not just > leave it there for the minority of us who like the concept?
I guess the key motivator is the usual set of design principles: 3. Keep the language small and simple. 4. Provide only one way to do an operation. Well, this phrasing is actually from the "Spirit of C" section of the introduction to the ISO C standard, but the Zen of Python phrasing, """There should be one-- and preferably only one --obvious way to do it.""" isn't all that different. Having lambda in the language in addition to def provides two ways to do an operation (make a function), and for that it makes the language a little bit less simple and less small than if only def was there. I guess that's why Guido now regrets ever having accepted lambda into the language, and hopes to take it away when backwards compatibility can be broken (i.e., in 3.0). Having just reviewed, edited and merged over 1000 recipes to select about 1/3 of those for the 2nd edition of the Cookbook, I think I'm in a good position to state that, at least as far as CB contributors are representative of the Python community, uses of lambda that are dubious to very dubious to absurd outnumber those which are decent to good by around 4:1. If I see another case of: somename = lambda x: ... instead of the obvious def somename(x): ... I think I'll scream, though not quite as loud as for my next seeing: map(lambda x: f(x), ... instead of map(f, ... I don't know what it IS about lambda that prompts so much dubious to absurd use, but that's what I observed. I don't know if that plays any role in Guido's current thinking, though -- I have no idea how much "dubious Python" he's had to struggle with. One could argue that the typical abuses of redundant lambda as shown above are closely related, e.g., to typical abuses of booleans, such as: if (x>y) == True: Funny enough, though, I've seen the equivalent of this latter abuse very often in C and C++, but not in Python (again judging e.g. from the submissions to the cookbook site). Maybe it's bool's relatively recent introduction in the language; after all, one DOES often see: if len(somecontainer) > 0: instead of the obvious if somecontainer: so it's not as if pythonistas in general are blessed with some magical "redundancy avoidance spell"... Alex -- http://mail.python.org/mailman/listinfo/python-list