Would you please explain the difference (if any) between
co-routine
generator
closure
(I vaguely recall, that a co-routine was a set of mutually invoking
routines.)
Actually, this seems more generic. This might be perfect for an
iterator.
As for language implications, what would you do with a yield
within a map/grep (or future reduce), or is that an implementation
detail?
<chaim>
>>>>> "PRL" == Perl6 RFC Librarian <[EMAIL PROTECTED]> writes:
PRL> =head1 TITLE
PRL> Co-routines
PRL> =head1 ABSTRACT
PRL> This RFC proposes the addition of a new function return command:
PRL> C<yield>. Unlike C<return>, C<yield> preserves the execution state of
PRL> the subroutine in which it's called, allowing the execution to be
PRL> resumed at the following statement, next time the subroutine is called.
PRL> It is also proposed that C<yields> may nest, to simplify the
PRL> construction of recursive co-routines and iterators.
PRL> =head1 BACKGROUND
PRL> Normally, when a subroutine returns, its execution terminates
PRL> and it final context is completely lost. The next time the subroutine
PRL> is invoked, it recommences executing from its first statement.
PRL> In a coroutine, a value may be returned in such a way that the
PRL> execution of the routine is I<suspended>, along with all its
PRL> local context. The next time the routine in invoked, its execution
PRL> resumes from the statement after the previous point of return.
--
Chaim Frenkel Nonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183