> 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.
and a function which returns the first n elements from a list:sub list_all_even { _list_all_even_from(0) } sub _list_all_even_from { my $from=shift; ($from, _list_all_even_from($from+2)) }
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...sub head { my ($n,@list)=@_; $n ? ($list[0],head($n-1,butfirst(@list))) : () } sub butfirst { shift; @_ }
In reply to Re^7: Next Language to Learn
by rovf
in thread Next Language to Learn
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |