sub mapn (&@) {
my ( $callback, $n ) = splice @_, 0, 2;
map $callback->( splice @_, 0, $n ), 0 .. @_ / $n -1;
}
####
sub mapnz (&@) {
my ( $callback, $n ) = splice @_, 0, 2;
my ( $i, $j ) = ( 0 ) x 2;
map {
$i = $j;
$callback->( @_[ $i .. ( $j += $n ) - 1 ] );
} 0 .. @_ / $n - 1;
}
####
sub mapn (&@) {
my ( $callback, $n ) = splice @_, 0, 2;
map {
$n = @_ if $n > @_;
$callback->( splice @_, 0, $n );
} 0 .. @_ / $n - 1;
}
####
sub mapn (&@) {
my ( $callback, $n ) = splice @_, 0, 2;
my ( $i, $j ) = ( 0 ) x 2;
map {
$i = $j;
$n = @_ - $i if $i + $n > @_;
$callback->( @_[ $i .. ( $j += $n ) - 1 ] );
} 0 .. @_ / $n - 1;
}
####
sub mapnz (&@) {
my ( $callback, $n ) = splice @_, 0, 2;
push @_, ( undef ) x ( -@_ % $n );
map $callback->( splice @_, 0, $n ), 0 .. @_ / $n - 1;
}