c:\@Work\Perl>perl -wMstrict -le
"sub Iterator (&) { return $_[0]; }
;;
sub pairs {
my @set = @_;
my ($i, $j) = (0, 0);
;;
return Iterator {
$j = ++$i + 1 if ++$j > $#set;
($i, $j) = (0, 0) and return unless $i < $#set;
return [ @set[ $i, $j ] ];
};
}
;;
my $abcd = pairs(qw(a bee c d));
while (my $p = $abcd->()) { printf qq{(@$p) }; }
print '';
;;
while (my $p = $abcd->()) { printf qq{(@$p) }; }
"
(a bee) (a c) (a d) (bee c) (bee d) (c d)
(a bee) (a c) (a d) (bee c) (bee d) (c d)
Give a man a fish: <%-(-(-(-<
|