Documentation for method is-lazy assembled from the following pages:

Class: Seq §

From Seq

(Seq) method is-lazy §

method is-lazy(Seq:D:)

Returns True if and only if the underlying iterator or cached list considers itself lazy. If called on an already consumed sequence, throws an error of type X::Seq::Consumed.

Class: HyperSeq §

From HyperSeq

(HyperSeq) method is-lazy §

method is-lazy(--> False )

Returns False.

Class: RaceSeq §

From RaceSeq

(RaceSeq) method is-lazy §

method is-lazy(--> False )

Returns False.

Role: Iterator §

From Iterator

(Iterator) method is-lazy §

Defined as:

method is-lazy(Iterator:D: --> Bool:D)

Should return True for iterators that consider themselves lazy, and False otherwise.

Built-in operations that know that they can produce infinitely many values return True here, for example (1..6).roll(*).

say (1 .. 100).is-lazy# OUTPUT: «False␤» 
say (1 .. ∞).is-lazy# OUTPUT: «True␤»

The Iterator role implements this method returning False, indicating a non-lazy iterator.