The eager routine

Combined from primary sources listed below.

In class List ( Type/List )§

See primary docmentation in context for routine eager.

routine eager§

multi method eager(List:D: --> List:D)

Evaluates all elements in the List eagerly, and returns them as a List.

my  \ll = (lazy 1..5).cache;

say ll[];     # OUTPUT: «(...)␤»
say ll.eager  # OUTPUT: «(1 2 3 4 5)␤»

In class Any ( Type/Any )§

See primary docmentation in context for method eager.

method eager§

method eager() is nodal

Interprets the invocant as a List, evaluates it eagerly, and returns that List.

my  $range = 1..5;
say $range;         # OUTPUT: «1..5␤»
say $range.eager;   # OUTPUT: «(1 2 3 4 5)␤»

In role Sequence ( Type/Sequence )§

See primary docmentation in context for method eager.

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 $s.is-lazy# OUTPUT: «True␤»
say $s.eager;   # OUTPUT: «(1 2 3 4 5)␤»

say $s.eager;
CATCH {
    when X::Seq::Consumed {
say 'Throws exception if already consumed';
}
}
# OUTPUT: «Throws exception if already consumed␤»