#!/usr/bin/perl
#
# eg19: second lazylist example, a proper lazy lazylist..
#

use strict;
use warnings;
use Function::Parameters qw(:strict);

use List;
$List::as_string_limit = 8;

# list_upto: return a lazy list of numbers between $min and $max
fun list_upto( $min, $max )
{
	return List->nil() if $min > $max;
	return List->cons( $min, fun { list_upto($min+1, $max) } );
}

my $list = list_upto( 100, 200 );
print "first few elements of upto(100,200) list: $list\n";
