<div dir="ltr">This is brought up from time to time. I believe it is based on a misunderstanding of coroutines.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Feb 16, 2015 at 4:53 AM, Luciano Ramalho <span dir="ltr"><<a href="mailto:luciano@ramalho.org" target="_blank">luciano@ramalho.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Coroutines are useless until primed by a next(my_coro) call. There are<br>
decorators to solve this by returning a primed coroutine. Such<br>
decorators add another problem: now the user may be unsure whether a<br>
specific coroutine from a third-party API should be primed or not<br>
prior to use.<br>
<br>
How about having a built-in function named send() with the signature<br>
send(coroutine, value) that does the right thing: sends a value to the<br>
coroutine, priming it if necessary. So instead of writing this:<br>
<br>
>>> next(my_coro)<br>
>>> my_coro.send(a_value)<br>
<br>
You could always write this:<br>
<br>
>>> send(my_coro, a_value)<br>
<br>
At a high level, the behavior of send() would be like this:<br>
<br>
def send(coroutine, value):<br>
    if inspect.getgeneratorstate() == 'GEN_CREATED':<br>
        next(coroutine)<br>
    coroutine.send(value)<br>
<br>
Consider the above pseudo-code. Proper handling of other generator<br>
states should be added.<br>
<br>
This would make coroutines easier to use, and would make their basic<br>
usage more consistent with the usage of plain generators using a<br>
function syntax -- eg. next(my_gen) -- instead of method call syntax.<br>
<br>
What do you think? If this has been discussed before, please send me a<br>
link (I searched but came up empty).<br>
<br>
Best,<br>
<br>
Luciano<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
--<br>
Luciano Ramalho<br>
Twitter: @ramalhoorg<br>
<br>
Professor em: <a href="http://python.pro.br" target="_blank">http://python.pro.br</a><br>
Twitter: @pythonprobr<br>
_______________________________________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-ideas" target="_blank">https://mail.python.org/mailman/listinfo/python-ideas</a><br>
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" target="_blank">http://python.org/psf/codeofconduct/</a><br>
</font></span></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature">--Guido van Rossum (<a href="http://python.org/~guido">python.org/~guido</a>)</div>
</div>