On 25 April 2015 at 16:23, Greg Ewing <greg.ew...@canterbury.ac.nz> wrote: > Guido van Rossum wrote: >> >> Sorry, when I wrote "future" (lower-case 'f') I really meant what Yury >> calls *awaitable*. That's either a coroutine or something with an __await__ >> emthod. > > > But how is an awaitable supposed to raise StopIteration > if it's implemented by a generator or async def[*] function? > Those things use StopIteration to wrap return values. > > I like the idea of allowing StopIteration to be raised > in an async def function and wrapping it somehow. I'd > add that it could also be unwrapped automatically when > it emerges from 'await', so that code manually invoking > __anext__ can catch StopIteration as usual. > > I don't think this could conflict with any existing > uses of StopIteration, since raising it inside generators > is currently forbidden. > > [*] I'm still struggling with what to call those things. > Calling them just "coroutines" seems far too ambiguous. > (There should be a Zen item something along the lines > of "If you can't think of a concise and unambiguous name > for it, it's probably a bad idea".)
I think "async function" is fine - "async function" is to "coroutine" as "function" is to "callable". Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com