[Melbourne-pm] map -- with an iterator

Toby Corkindale toby.corkindale at strategicdata.com.au
Wed Apr 21 22:59:23 PDT 2010


Hey all,
You're all familiar with the map operator, used like so:

   my @results = map { transform $_ } @input;


However I often find that instead of @input, I have $iterator,
where $iterator is an object supporting a ->next method.


What I would like to be able to do is something like:
   my @results = map { transform $_ } $iterator;
and then have map walk through my iterator for me.

Or even better, I'd like to be able to have:
   my $results = map { transform $_ } $iterator;
where $results is an object supporting a ->push or ->add method of some 
sort.


Twisting things around, I could see this being more of a feature of 
$iterator.. ie. so you could do:
my @results = $iterator->map(sub { transform $_ });


I wondered if there are any modules floating around that can be used to 
map on top of the $iterators to add things like 'map', 'filter', 
'foreach', etc to them?

ie. So I could go:

my $iterator = Third::Party::Module->foo;
use_magic_wand($iterator);
$iterator.foreach(sub { action $_ });



Cheers,
Toby
(Who may have been unduly influenced by Scala lists)


More information about the Melbourne-pm mailing list