>I suppose that one might argue that I *still* just don't really get >lambdas (and I wouldn't argue with that). I can see some advantages >to small inline functions, though I suspect that a more-explicit >currying mechanism (such as the proposed partial() higher-order >function) could easily replace such uses. I'm sorry to say, though, >that the supposed advantages of anonymity come across as little more >than handwaving assertions to me, no matter how sincerely they're >intended.
I'm with Jeff on this one - I've yet to see the light regarding lambda's. I understand they're used through-out Tkinter GUI stuff, can anyone put up an example of why a lambda is better? I would like to 'get' the concepts. Is this one of those conceptual things like OOP? Or is it a subtlety that a Masters in COSC is necessary to appreciate? On Thu, 03 Feb 2005 16:06:55 -0800, Jeff Shannon <[EMAIL PROTECTED]> wrote: > Alan Gauld wrote: > > > > >>However, Python doesn't need lambdas to be able to write in a > >>functional style. > > > > I disagree Jeff. It does need lambdas to do FP properly, and > > better lambdas than we have currently. What it doesn't need > > is the lambda keyword and syntax - although pesonally I like > > lambda since it is descriptive! > > Well, we'll have to continue to disagree on that. ;) Personally, I > can't help but think that 'lambda' is descriptive only to people > who've experienced it elsewhere, and that that does *not* include the > majority of the programming community, but I could be mistaken. :) > > >>Functions are first-class objects and can be passed > >>around quite easily, > > > > Yes, but lambdas are more than first class functions, they > > are anonymous functions! In fact really just callable code > > blocks, not necessarily functions in the strictest sense > > (except that every callable in FP is a function...! ;-) > > Well, given that in Python a function is just a callable code block > that's bound to a name... ;) Personally, I fail to see why having an > anonymous function is such a huge conceptual advantage, no matter how > many times this is proclaimed as truth by lambda-users, but again this > is just my own impression. > > > Having to define every function before using it would > > be a big hassle and make code less readable IMHO. > > Here, ISTM that you're emphasizing the in-line nature of lambdas as > being their key usage point... And personally, I prefer to have a > glossary of terms rather than having to decipher jargon by context. ;) > > >>only a few differences between lambdas and named functions in > >> Python: > >> > >> - Anonymous vs named > > > > the key feature > > Again, I fail to see why this is such an advantage -- I've seen > assertions that it is, over and over again, but never any convincing > evidence.... > > >> - Single expression vs suite of statements > > > > A python restriction. > > Well, I *did* specify that I was talking about 'in Python'... ;) > > > >>I'd also argue that the inline nature is the *true* differentiating > >>feature of lambdas -- the fact that they're anonymous is relatively > >>minor. > > > > I agree, if I had an inline mechanism that forced me to > > provide a name I could just use 'f' over and over and > > not feel too cheated, but its nicer not to have an artificial > > name when theres no need. > > Personally, I prefer to have the opportunity to provide a meaningful > name, and don't see where a generic name is any more restrictive than > having no name, but again, maybe that's just me. > > >>So, while there are some advantages to having single-use callables > >>be defined inline > > > > The other advantage is the huge conceptial advantage that > > real lambdas confer. The breakthrough idea of > > > > def f(x): return x+x > > > > being the same as > > > > f = lambda x: x+x > > > > is only possible to demonstrate if you have lambda to start with. > > And yet that concept of a function name being just another variable > > and the callable code being an object in its own right becomes > > much more obvious in my opinion. lambda is a learning tool which > > shows what is really happening whereas def is just syntactic sugar. > > Hm, I understood the idea of functions being just code objects that > were bound to a name, and could be passed around, stored in > collections, and effectively renamed, well before I really got a hold > on lambdas as anything more than some confusing bit of magic. Of > course, I started in C, where I was fairly comfortable with the idea > of function pointers; function objects are a pretty simple step up, > abstraction-wise, from that. > > I suppose that one might argue that I *still* just don't really get > lambdas (and I wouldn't argue with that). I can see some advantages > to small inline functions, though I suspect that a more-explicit > currying mechanism (such as the proposed partial() higher-order > function) could easily replace such uses. I'm sorry to say, though, > that the supposed advantages of anonymity come across as little more > than handwaving assertions to me, no matter how sincerely they're > intended. (I've just started to read through SICP, to pick up some > lisp/scheme, in hopes of understanding the appeal a bit better, so > maybe there's hope for me yet. ;) ) > > Jeff Shannon > Technician/Programmer > Credit International > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > -- 'There is only one basic human right, and that is to do as you damn well please. And with it comes the only basic human duty, to take the consequences. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor