Cursus Raku / Programmatio functionalis, simultanea, reactiva et retialis / Programmatio functionalis / Generatores

gather piger

Blocus gather piger est: non totus simul currit. Valores solum tunc producit cum extrahuntur, quod significat gather seriem infinitam describere posse et tamen utilem esse — simpliciter valores sumere desinis cum satis habes.

Ars est effectum pigrum servare. Illum in simplici @array reponens conareris omnes valores simul colligere, et pro serie infinita id numquam finiret. Loco eius sequentiam in scalari serva (ubi Seq piger manet) et ex ea partem extrahe:

my $naturals = gather {
    my $n = 1;
    loop {
        take $n++;
    }
}

say $naturals[^5]; # (1 2 3 4 5)

loop numquam finit, sed soli quinque valores umquam producuntur, quia tot per [^5] petivimus. Ex fronte etiam per .head extrahere potes:

say (gather { my $n = 1; loop { take $n++ } }).head(3); # (1 2 3)

Pigritia est id quod gather permittit fluenta infinita tuto exemplare: nihil computatur donec opus sit, et exacte tantum sumis quantum vis.

Quiz — gather et take   |   Cubos collige


💪 Vel recta ad exercitationes huius sectionis i.