List-Enumerator
view release on metacpan or search on metacpan
t/03_fibonacci.t view on Meta::CPAN
use strict;
use Test::More tests => 7;
use lib "lib";
use List::Enumerator qw/E/;
use Data::Dumper;
sub p ($) { warn Dumper shift }
sub fibonacci {
my ($p, $i) = (0, 1);
E(0, 1)->chain(E({
next => sub {
my $ret = $p + $i;
$p = $i;
$i = $ret;
$ret;
},
rewind => sub {
($p, $i) = (0, 1);
}
}));
}
is_deeply [ fibonacci->take(10) ], [
0, 1, 1, 2, 3, 5, 8, 13, 21, 34
];
my $fib = fibonacci();
is_deeply [ $fib->take(10) ], [
0, 1, 1, 2, 3, 5, 8, 13, 21, 34
];
is_deeply [ $fib->take(10) ], [
0, 1, 1, 2, 3, 5, 8, 13, 21, 34
];
is_deeply [ $fib->drop(10)->take(10) ], [
55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181
];
is_deeply [ fibonacci->drop(10)->take(10) ], [
55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181
];
my $fib_drop10 = $fib->drop(10);
is_deeply [ $fib_drop10->take(10) ], [
55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181
];
is_deeply [ $fib_drop10->take(10) ], [
55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181
];
# is $fib->[10], 55;
( run in 1.109 second using v1.01-cache-2.11-cpan-364913b4093 )