Hi, On Saturday, January 24, 2015 at 3:36:04 PM UTC-5, Devin Jeanpierre wrote: > [...] > Obviously, nobody will be happy until you can do: > > def call(*a, **kw): return lambda f: f(*a, **kw) > > @call() > def x, y (): > yield 1 > yield 2 > > Actually, maybe not even then.
You're probably right, because someone already _has_ come up with that: https://github.com/carymrobbins/python-blocks/blob/f51d10bd2439990cce7e2cb78e6e56ed05e78648/src/blocks.py#L191 Anyway Chris, to answer your question, the python-blocks repo shows the 'functional decorator style' taken to its logical conclusion, with decorators for all the various functional building blocks like mapping, folding, currying, etc. Incidentally, with a properly-defined decorator 'factory', you could get a pretty generic decorator for your dispatch example: cmd = {} dispatch = make_dispatch(cmd) @dispatch def foo(*args): print("You asked to foo.") @dispatch def bar(*args): print("There's no wine in the bar.") @dispatch def cmd2(*args): print("Asdf! Asdf!") cmd["foo"]() # Etc. Regards, Yawar -- https://mail.python.org/mailman/listinfo/python-list