sub imap {
my ($transform, $it) = @_;
return Iterator {
my $next = NEXTVAL($it);
return unless defined $next;
return $transform->($next);
}
}
####
#!/usr/bin/env perl
use 5.010;
use strict;
use warnings;
sub foo(&@) {
my $coderef = shift;
my @params = @_;
my @ret;
while(@params) {
push @ret, $coderef->($_);
}
return @ret;
}
my @a = ( "1", "2", "3", "4", );
my @b = foo { $_ ** 2 } @a;
####
my @b = foo { $_ = shift; $_ ** 2 } @a;
my @b = foo { my $var = shift; $var ** 2 } @a;
####
#!/usr/bin/env perl
use 5.010;
use strict;
use warnings;
sub foo(&@) {
my $coderef = shift;
my @params = @_;
my @ret;
for(@params) {
push @ret, $coderef->();
}
return @ret;
}
my @a = ( "1", "2", "3", "4", );
my @b = foo { $_ ** 2 } @a;