David Bolen wrote:
Ian Bicking <[EMAIL PROTECTED]> writes:


The one motivation I can see for function expressions is
callback-oriented programming, like:

  get_web_page(url,
    when_retrieved={page |
      give_page_to_other_object(munge_page(page))})


This is my primary use case for lambda's nowadays as well - typically
just to provide a way to convert the input to a callback into a call
to some other routine.  I do a lot of Twisted stuff, whose deferred
objects make heavy use of single parameter callbacks, and often you
just want to call the next method in sequence, with some minor change
(or to ignore) the last result.

So for example, an asynchronous sequence of operations might be like:

    d = some_deferred_function()
    d.addCallback(lambda x: next_function())
    d.addCallback(lambda blah: third_function(otherargs, blah))
    d.addCallback(lambda x: last_function())

Steven proposed an ignoreargs function, and the partial function offers the other side (http://www.python.org/peps/pep-0309.html). So this would become:


d = some_deferred_function()
d.addCallback(ignoreargs(next_function, 1))
d.addCallback(partial(third_function, otherargs))
d.addCallback(ignoreargs(last_function, 1))

I'm not sure this is "better" than it is with lambda. It's actually considerably less readable to me. Hmm... well, that makes me less excited about those...

--
Ian Bicking  /  [EMAIL PROTECTED]  / http://blog.ianbicking.org
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to