Kurso de Raku / Progresinta / Regofluo / Deklaraj prefiksoj / Exercises / Devigi fervoron
Solvo: Devigi fervoron
Jen ebla solvo de la tasko.
Kodo
say (1 .. Inf).is-lazy;
say (eager 1..3).is-lazy;
say (lazy 1..3).is-lazy;🦋 Vi povas trovi la fontkodon en la dosiero force-eager.raku.
Eligo
True
False
TrueKomentoj
Intervalo ĝis
Infne povas esti komputata tutan samtempe, do ĝi estas maldiligenta:.is-lazyraportasTrue.La prefikso
eagerdevigas liston esti produktita tuj, do la rezulto ne plu estas maldiligenta —.is-lazyraportasFalse. Ĉi tio estas la rekta kontraŭaĵo de markado de listo kiellazy.Ne apliku
eageral nelimigita intervalo:eager 1 .. Infprovas komputi ĉiun elementon samtempe, do la programo simple blokiĝas, konsumante pli kaj pli da memoro ĝis ĝi estas mortigita.eagerestas sekura nur por listoj, pri kiuj vi scias, ke ili estas finitaj.Ankaŭ la inverso funkcias:
lazy 1..3markas eĉ mallongan, finitan intervalon kiel maldiligenta, do.is-lazyraportasTrue. La prefikso starigas la maldiligento-flagon sendepende de la grandeco de la listo — ĝi ne devas esti senfina por esti maldiligenta.