|
#!/usr/bin/perl -w
my $loaded ;
BEGIN { $| = 1; print "1..3\n" ; }
END { print "not ok 1\n" unless $loaded ; }
$loaded =1;
print "ok 1\n" ;
my $foo = join ( '' ,
nestedmap sub {
nestedmap sub {
nestedmap sub {
join ( '' , @NestedMap::stack [0..2])
}, qw(A B C)
}, qw(a b c)
}, qw(1 2 3)
);
print 'not ' unless ( $foo eq 'Aa1Ba1Ca1Ab1Bb1Cb1Ac1Bc1Cc1Aa2Ba2Ca2Ab2Bb2Cb2Ac2Bc2Cc2Aa3Ba3Ca3Ab3Bb3Cb3Ac3Bc3Cc3' );
print "ok 2\n" ;
{ local $^W=0;
$foo = join ( '' , @{ zipn( [1,2,3], [ qw(a b c d) ], [ qw(cat dog) ] )});
}
print 'not ' unless ( $foo eq '1acat2bdog3cd' );
print "ok 3\n" ;
sub zipn {
my @args = @_ ;
[
nestedmap sub {
nestedmap sub {
$args [ $_ ][ $NestedMap::stack [1]]
}, 0.. $#args
}, 0 .. max( map { $
]
}
sub max { foldl( sub { ( $_ [0] > $_ [1]) ? $_ [0] : $_ [1]; }, @_ ); }
sub foldl {
my ( $f , $z , @xs ) = @_ ;
$z = $f ->( $z , $_ ) foreach ( @xs );
return $z ;
}
|