An experimentation of implementing real lazy lists in Perl5. For real world usecases, please use Perlude instead.
Haskell prelude miss you when you write perl stuff? Perlude is a port of the most common keywords. Some other keywords where added when there is no haskell equivalent.
Example: in haskell you can write
nat = [0..] is_even x = ( x `mod` 2 ) == 0 evens = filter is_even main = mapM_ print $ take 10 $ evens nat
in perlude, the same code will be:
use Perlude; my $nat = enlist { state $x = 0; $x++ }; sub is_even { ($_ % 2) == 0 } sub evens { filter {is_even} shift } traverse {say} take 10, evens $nat
all the Perlude documentation is relevent. just replace sub by enlist
To install Perlude, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Perlude
CPAN shell
perl -MCPAN -e shell install Perlude
For more information on module installation, please visit the detailed CPAN module installation guide.