sub i_produce {
my ($start, $count) = @_;
for my $i ($start..$start+$count) {
yield $i;
};
};
sub i_two_columns {
while (defined (my $i = produce)) {
print $i;
if (defined (my $j = produce)) {
print "\t$j";
};
print "\n";
};
};
####
sub p_produce {
my ($consumer, $start, $count) = @_;
for my $i ($start..$start+$count) {
$consumer->($i);
};
};
{
my $odd;
sub p_two_columns {
# aieeee - need to maintain state
$odd = ($odd + 1)%2;
};
};
##
##
{
sub p_produce {
my ($consumer, $_start, $_count) = @_;
# aieee - need to maintain state:
my $pos = $start;
return sub {
$pos < $start+$count ? $pos++ : undef
};
};
};
sub i_two_columns {
my ($produce) = p_produce(2,10);
while (defined (my $i = $produce->())) {
print $i;
if (defined (my $j = $produce->())) {
print "\t$j";
};
print "\n";
};
};