From Shriram Krishnamurthi, on ll1-discuss:
The Fate Of LAMBDA in PLT Scheme v300
Lambda the Ultimate Design Flaw
About 30 years ago, Scheme had FILTER and MAP courtesy of Lisp hackers who missed them from their past experience. To this collection, Scheme added a lexically-scoped, properly-functioning LAMBDA. But, despite of the PR value of anything with Guy Steele's name associated with it, we think these features should be cut from PLT Scheme v300.
We think dropping FILTER and MAP is pretty uncontroversial; (filter P S) is almost always written clearer as a DO loop (plus the LAMBDA is slower than the loop). Even more so for (map F S). In all cases, writing the equivalent imperative program is clearly beneficial.
Why drop LAMBDA? Most Scheme users are unfamiliar with Alonzo Church (indeed, they don't even know that he was related to Guy Steele), so the name is confusing; also, there is a widespread misunderstanding that LAMBDA can do things that a nested function can't -- we still recall Dan Friedman's Aha! after we showed him that there was no difference! (However, he appears to have since lapsed in his ways.) Even with a better name, we think having the two choices side-by-side just requires programmers to think about their program; not having the choice streamlines the thought process, and Scheme is designed from the ground up to, as much as possible, keep programmers from thinking at all.
if you want to be charitable to Guido, you could interpret his message as saying: “Look, we tried to put some functional programming tools into Python, but we ended up completely screwing them up; let's just take them all out rather than give the incorrect perception that we're a real functional programming language.”
Python's lambda is so restricted, intentionally and arbitrarily, that it cannot really support the ecosystem of useful higher order functions we take for granted in Lisp.Posted by jjwiseman at April 01, 2005 12:04 AM