Perl 6 More laziness and lists #14

A basic challenge of iterators

sub mymap(@list, &block) {
     my @result;
     while @list {
         push @result, &block(@list.shift);
     }
     @result;
 }

 my @lines = $file.lines;
 mymap(@lines, &block);

What happens to @lines after the call to mymap?

It's emptied by the repeated shifts.

The programmer likely didn't intend or expect this.

The problem is akin to "bound" versus "unbound" lists.

Copyright © 2012
http://www.pmichaud.com/2012/pres/