4. Iterators(upto)

Iteratorって何の役に立つんじゃい!!なんて思ってたけど、読んでみると遅延評価そのままやん!!
とりあえず本に書いてあった利点をリスト。

  • 巨大なリストを作らなくて済むので省メモリ
  • 深さ優先、幅優先のどちらでも探索が可能(再帰だと深さ優先になる)

あとは、例題。

#!/usr/bin/env perl

sub upto {
    my ($m, $n) = @_;

    return sub {
	return $m <= $n ? $m++ : undef;
    };
}

my $it = upto(3, 10);

while (defined(my $val = $it->())) {
    print "$val\n";
}