Help language development. Donate to The Perl Foundation
Seq::Bounded
use Seq::Bounded;
my $infinite-squares = { 1, 2 ... * }.map(* ** 2);
my $three-digit-squares = ($infinite-squares but Bounded)
.while(:skip, * < 100)
.until(* >= 1000);
This role, when applied to a (possibly infinite) sequence, allows adding bounds conditions based the values of the sequence. This is useful when an infinite Seq is mapped by a function - in such a case, it could be inconvenient to specify the bound in the sequence generator.
Applying this role adds the methods while
and until
. An optional adverb :skip
converts the bound from the end of the Seq to the start.
The role only applies to classes (and objects) of type Seq
or its subclasses.
method while( &cond ) returns Seq
while tests the given condition against each member of the sequence and terminates the sequence when the condition is no longer satisfied.
method while( &cond, :$skip! ) returns Seq
with the :skip adverb
method until( &cond ) returns Seq
until tests the given condition against each member of the sequence and terminates the sequence when the condition is satisfied.
method until( &cond, :$skip! ) returns Seq
with the :skip adverb
This file is licensed under the same terms as perl itself.
Doug Schrag [email protected]