role Sequence

Common methods of sequences

role Sequence does PositionalBindFailover { }

This role implements a series of methods for converting sequences and accessing their elements. These methods should work on all sequences: serial Seq, ordered parallel HyperSeq, and unordered parallel RaceSeq.

These methods have in common that they all access the underlying iterator if the sequence has not been cached yet. Therefore they will throw an error of type X::Seq::Consumed if called on a Seq that was already consumed.


method Str

multi method Str(::?CLASS:D:)

Stringifies the cached sequence.

method Stringy

multi method Stringy(::?CLASS:D:)

Calls .Stringy on the cached sequence.

method Numeric

method Numeric(::?CLASS:D:)

Returns the number of elements in the cached sequence.

method AT-POS

multi method AT-POS(::?CLASS:D: Int:D $idx)
multi method AT-POS(::?CLASS:D: int $idx)

Returns the element at position $idx in the cached sequence.


multi method EXISTS-POS(::?CLASS:D: Int:D $idx)
multi method EXISTS-POS(::?CLASS:D: int $idx)

Returns a Bool indicating whether there is an element at position $idx in the cached sequence.

method eager

method eager(::?CLASS:D: --> List:D)

Returns an eagerly evaluated List based on the invocant sequence, and marks it as consumed. If called on an already consumed Seq, throws an error of type X::Seq::Consumed.

my $s = lazy 1..5;
say $ OUTPUT: «True␤» 
say $s.eager;   # OUTPUT: «(1 2 3 4 5)␤» 
say $s.eager;
    when X::Seq::Consumed {
        say 'Throws exception if already consumed';
# OUTPUT: «Throws exception if already consumed␤»

method fmt

method fmt($format = '%s'$separator = ' ' --> Str:D)

Formats the cached sequence.

method gist

multi method gist(::?CLASS:D:)

Returns the gist of the cached sequence.

Type Graph

Type relations for Sequence
perl6-type-graph Sequence Sequence PositionalBindFailover PositionalBindFailover Sequence->PositionalBindFailover Mu Mu Any Any Any->Mu Iterable Iterable RaceSeq RaceSeq RaceSeq->Sequence RaceSeq->Any RaceSeq->Iterable Cool Cool Cool->Any Seq Seq Seq->Sequence Seq->Iterable Seq->Cool HyperSeq HyperSeq HyperSeq->Sequence HyperSeq->Any HyperSeq->Iterable

Expand above chart

Routines supplied by role PositionalBindFailover

Sequence does role PositionalBindFailover, which provides the following routines:

(PositionalBindFailover) method cache

method cache(PositionalBindFailover:D: --> List:D)

Returns a List based on the iterator method, and caches it. Subsequent calls to cache always return the same List object.

(PositionalBindFailover) method list

method list(PositionalBindFailover:D: --> List:D)

Returns a List based on the iterator method without caching it.

(PositionalBindFailover) method iterator

method iterator(PositionalBindFailover:D:{ ... }

This method stub ensure that a class implementing role PositionalBindFailover provides an iterator method.