The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Test::More tests => 1;

use lib "lib";
use List::Enumerator qw/E/;

use Data::Dumper;
sub p ($) { warn Dumper shift }

my $fizzbuzz =
	E(1)->countup
		->zip(
			E("", "", "Fizz")->cycle,
			E("", "", "", "", "Buzz")->cycle
		)
		->map(sub {
			my ($n, $fizz, $buzz) = @$_;
			$fizz . $buzz || $n;
		});

# E(1)->countup
#     => [1, 2, 3, 4, 5 ....]
# E("", "", "Fizz")->cycle
#     => ["", "", "Fizz", "", "", "Fizz", ...]
# zip
#  [ [1, "", ""], [2, "", ""], [3, "Fizz", ""] ]

is_deeply $fizzbuzz->take(20)->to_a, [
	1,
	2,
	'Fizz',
	4,
	'Buzz',
	'Fizz',
	7,
	8,
	'Fizz',
	'Buzz',
	11,
	'Fizz',
	13,
	14,
	'FizzBuzz',
	16,
	17,
	'Fizz',
	19,
	'Buzz'
];