That coroutine RFC seems rather sketchy. First of all, it's describing generators, not coroutines. Coroutines are symmetrical; a callee and caller are equal partners in saving and resuming state (unlike the master-slave paradigm suggested by the RFC).
My feeble understanding of coroutine implementation is that it is best to create a continuation primitive first, from which coroutines, "green" threads, generators, and exceptions can all be easily derived. This is, by the way, an area in which Python (Stackless), and of course Scheme, are both far ahead of Perl.
I also failed to understand the logic of the following example from the RFC:
... one could write:
%newhash = map {yield transform_key($_); transform_val($_)}
+%oldhash;
This flattens the %oldhash to a sequence of key/value pairs
This does not make sense to me, since $_ is a localized stack-based variable, which should in principle be wrapped up in the saved local context/state. Thus calls to transform_val would be operating on keys, not values.
MeowChow
s aamecha.s a..a\u$&owag.print
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|