A much better person to ask is Dominus, he is in the
process of writing a book
on exactly this subject.
Chapter 4 in particular offers direct iterative solutions
of the above problem. Once you know the techniques, they
are straightforward to apply in any language with proper
support for closures. And the techniques are essentially
to create utility functions that take one iterator and
create new ones out of it. For instance if you like
doing stuff procedurally with map, grep, an easy way to
produce a range etc, then you can create iterative
versions of the same. (For instance a range would return
all of the things in that range. An iterative map would
take a function and an iterator and give you an iterator
that is the result of applying that function to the output
of the first iterator.) And then it becomes a mechanical
process to write iterative versions of what you can dream
up in a list-oriented manner.
Alternately if you want the flavour of a co-routine solution
to the problem, and don't want to wait for Perl 6, Ruby
offers them now. So, I believe, does the very latest
version of Python. (Ruby goes further and people there
use them more often.) They don't offer the rest of Perl 6,
but they give you the flavour of a Perlish scripting
language with yield and (with Ruby or stackless Python)
full continuations.
-
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.
|