> For instance it would be interesting to see, how easy/clumsy it is to retrofit lazy evaluation into Perl.
E.g.you can tie an iterator to a variable.
... gimme an example and I'll see what's possible.
Good point.
For example, we have a function which generates the list of all even numbers, i.e.
sub list_all_even {
_list_all_even_from(0)
}
sub _list_all_even_from {
my $from=shift;
($from, _list_all_even_from($from+2))
}
and a function which returns the first n elements from a list:
sub head {
my ($n,@list)=@_;
$n ? ($list[0],head($n-1,butfirst(@list))) : ()
}
sub butfirst {
shift;
@_
}
Calling
head(5,list_all_even) should return the first even numbers, but in the implementation I gave,
list_all_even would, of course, loop forever. Under lazy evaluation,
list_all_even would only produces those values which are actually needed, so maybe your general idea of using an operator would lead in the right direction...
--
Ronald Fischer <ynnor@mm.st>