[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
On Thu, 23 May 2002, Paul Prescod wrote:
> Anything that can be done with lambda can be done without it, because
> these two statements are equivalent:
> _ = lambda y: y
> def _(y):
> Python's goal is regularity and readability, not succinctness.
Just to clarify - what I think you mean is that anything that can be done
with *Python's limited form of lambda* can be done without it, since inner
functions have the same restrictions lambda does.
> Anyhow, let's suppose that you are right and I am wrong about the
> uselessness of lambda. All of your examples of where lambda is
> appropriate are places where all you need is Python's lambda (not a more
> general block-holding, context-mutating lambda). If you want more, then
> you probably are using lambda in a context that would make sense to a
> Lisp programmer but not a Python programmer.
Paul, I'm curious - what is the idiomatic Python equivalent to
continuation-passing-style? I honestly can't imagine a way to write code
in CPS not using lambda (that is, a full, "context-mutating" lambda)
without it being horribly ugly to the point of unreadability. Even given
that Python doesn't have full first class continuations (does stackless?
or are they just co-routines?), can it reasonably simulate them?
If it can't, and I have a hard time seeing how it could, then that is a
huge blow to its power and usefulness for what I do, which is build web
applications. You will argue that thousands upon thousands of people
write web applications in Python, or other languages without
continuations, which is true - that doesn't stop me from being able to
consistently underbid them because I use more powerful tools.
(BTW, I looked at
discusses CPS in Python, but the example it gives happens not to do any
mutation, so it gets away with using Python's lambda - and even then,
states "What becomes evident in the above is that Python's lack of real
closures makes it a bit painful to write what in a functional language is
truly succinct and elegant.").