ILazyList<A> class final

An immutable, lazily-evaluated (potentially infinite) sequence.

Elements are computed on demand and memoized after first evaluation. Operations like map, filter, take, and drop return new lazy lists without forcing evaluation. Operations marked "Will force evaluation" in their doc comment traverse the whole list eagerly.

Construct with ILazyList.from, ILazyList.fill, ILazyList.tabulate, ILazyList.continually, ILazyList.ints, ILazyList.iterate, or ILazyList.unfold. Use ILazyList.builder when building incrementally.

// infinite sequence of natural numbers
final nats = ILazyList.ints(0);
nats.take(5).toIList(); // IList(0, 1, 2, 3, 4)
Mixed-in types
Available extensions

Properties

hashCode int
The hash code for this object.
no setteroverride
Returns the first element of this collection, or throws if it is empty.
no setteroverride
headOption Option<A>
Returns the first element of this collection as a Some if non-empty. If this collction is empty, None is returned.
no setterinherited
init ILazyList<A>
Will force evaluation
no setteroverride
inits RIterator<ILazyList<A>>
Will force evaluation
no setteroverride
isEmpty bool
Whether this collection contains no elements.
no setteroverride
isNotEmpty bool
Whether this collection contains at least one element.
no setterinherited
isTraversableAgain bool
Whether this collection can be traversed more than once.
no setterinherited
iterator RIterator<A>
Returns an RIterator over the elements of this collection.
no setteroverride
knownIsEmpty bool
true if the list has already been evaluated and is empty.
no setter
knownNonEmpty bool
true if the list has already been evaluated and is non-empty.
no setter
knownSize int
Returns the number of elements in this collection, if that number is already known. If not, -1 is returned.
no setteroverride
last → A
Returns the last element of this collection, or throws if it is empty.
no setterinherited
lastOption Option<A>
Returns the last element of this collection as a Some, or None if this collection is empty.
no setterinherited
length int
The number of elements in this sequence.
no setteroverride
nonEmpty bool
Whether this collection contains at least one element.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
size int
Returns the number of elements in this collection.
no setterinherited
tail ILazyList<A>
Returns a new collection with the first element removed. If this collection is empty, an empty collection is returned.
no setteroverride
tails RIterator<ILazyList<A>>
Returns an iterator of all potential tails of this collection, starting with the entire collection and ending with an empty one.
no setteroverride

Methods

addStringNoForce(StringBuffer b, String start, String sep, String end) StringBuffer
appended(A elem) ILazyList<A>
Returns a new Seq, with the given elem added to the end.
override
appendedAll(RIterableOnce<A> suffix) ILazyList<A>
Returns a new Seq, with elems added to the end.
override
canEqual(Object other) bool
inherited
collect<B>(Function1<A, Option<B>> f) ILazyList<B>
Returns a new collection by applying f to each element an only keeping results of type Some.
override
collectFirst<B>(Function1<A, Option<B>> f) Option<B>
Applies f to each element of this collection, returning the first element that results in a Some, if any.
override
combinations(int n) RIterator<ILazyList<A>>
Will force evaluation
override
concat(covariant RIterableOnce<A> suffix) ILazyList<A>
Returns a copy of this collection, with elems added to the end.
override
contains(A elem) bool
Returns true, if any element of this collection equals elem.
inherited
containsSlice(RSeq<A> that) bool
Returns true if that is contained in this collection, in order.
inherited
copyToArray(Array<A> xs, [int start = 0, int? n]) int
Copies elements into xs starting at start, writing at most n elements (or all remaining capacity when n is omitted).
inherited
corresponds<B>(covariant RSeq<B> that, Function2<A, B, bool> p) bool
Returns true if this collection has the same size as that and each corresponding element from this and that satisfies the given predicate p.
inherited
count(Function1<A, bool> p) int
Return the number of elements in this collection that satisfy the given predicate.
inherited
diff(RSeq<A> that) ILazyList<A>
Returns a new collection with the difference of this and that, i.e. all elements that appear in only this collection.
override
distinct() ILazyList<A>
Returns a new collection where every element is distinct according to equality.
override
distinctBy<B>(Function1<A, B> f) ILazyList<A>
Returns a new collection where every element is distinct according to the application of f to each element.
override
drop(int n) ILazyList<A>
Returns a new collection with the first n elements removed.
override
dropRight(int n) ILazyList<A>
Return a new collection with the last n elements removed.
override
dropWhile(Function1<A, bool> p) ILazyList<A>
Returns a new collection with leading elements satisfying p removed.
override
endsWith(RIterable<A> that) bool
Returns true if the end of this collection has the same elements in order as that. Otherwise, false is returned.
inherited
exists(Function1<A, bool> p) bool
Returns true if any element of this collection satisfies the given predicate, false if no elements satisfy it.
inherited
filter(Function1<A, bool> p) ILazyList<A>
Returns a new collection containing only elements that satisfy p.
override
filterNot(Function1<A, bool> p) ILazyList<A>
Returns a new collection containing only elements that do not satisfy p.
override
find(Function1<A, bool> p) Option<A>
Returns the first element from this collection that satisfies the given predicate p. If no element satisfies p, None is returned.
override
findLast(Function1<A, bool> p) Option<A>
Returns the last element satisfying p as Some, or None if none.
inherited
flatMap<B>(covariant Function1<A, RIterableOnce<B>> f) ILazyList<B>
Returns a new collection by applying f to each element and concatenating the results.
override
flatten() RIterable<A>

Available on RIterable<RIterable<A>>, provided by the RIterableNested2Ops extension

Concatenates all inner iterables into a single IList.
flatten() ILazyList<A>

Available on ILazyList<ILazyList<A>>, provided by the ILazyListNestedOps extension

Combines all nested lazy lists into one using concatenation.
fold(A init, Function2<A, A, A> op) → A
Alias for foldLeft with a same-type accumulator.
inherited
foldLeft<B>(B z, Function2<B, A, B> op) → B
Returns a summary value by applying op to all elements of this collection, moving from left to right. The fold uses a seed value of z.
override
foldRight<B>(B z, Function2<A, B, B> op) → B
Returns a summary value by applying op to all elements of this collection, moving from right to left. The fold uses a seed value of z.
inherited
forall(Function1<A, bool> p) bool
Returns true if all elements of this collection satisfy the given predicate, false if any elements do not.
inherited
force() ILazyList<A>
Forces evaluation of the entire list and returns this.
foreach<U>(Function1<A, U> f) → void
Applies f to each element of this collection, discarding any resulting values.
override
groupBy<K>(Function1<A, K> f) IMap<K, ILazyList<A>>
Will force evaluation
override
grouped(int size) RIterator<ILazyList<A>>
Returns a new iterator where each element is a collection of size elements from the original collection. The last element may contain less than size elements.
override
groupMap<K, B>(Function1<A, K> key, Function1<A, B> f) IMap<K, ILazyList<B>>
Will force evaluation
override
groupMapReduce<K, B>(Function1<A, K> key, Function1<A, B> f, Function2<B, B, B> reduce) IMap<K, B>
Partitions all elements of this collection by applying key to each element. Additionally f is applied to each element to generate a value. If multiple values are generating for the same key, those values will be combined using reduce.
inherited
indexOf(A elem, [int from = 0]) Option<int>
Returns the first index, if any, where the element at that index equals elem. If no index contains elem, None is returned.
inherited
indexOfSlice(RSeq<A> that, [int from = 0]) Option<int>
Finds the first index in this collection where the next sequence of elements is equal to that. If that cannot be found in this collection, None is returned.
inherited
indexWhere(Function1<A, bool> p, [int from = 0]) Option<int>
Returns the index of the first element that satisfies the predicate p. If no element satisfies, None is returned.
inherited
indices() Range
Returns a range of all indices of this sequence
inherited
intersect(RSeq<A> that) ILazyList<A>
Returns a new collection with the intersection of this and that, i.e. all elements that appear in both collections.
override
intersperse(A x) ILazyList<A>
Returns a new collection with sep inserted between each element.
override
isDefinedAt(int idx) bool
Returns true if this collection has an element at the given idx.
inherited
lastIndexOf(A elem, [int end = 2147483647]) Option<int>
Returns the last index, if any, where the element at that index equals elem. If no index contains elem, None is returned.
inherited
lastIndexOfSlice(RSeq<A> that, [int end = 2147483647]) Option<int>
Finds the last index in this collection where the next sequence of elements is equal to that. If that cannot be found in this collection, None is returned.
inherited
lastIndexWhere(Function1<A, bool> p, [int end = 2147483647]) Option<int>
Returns the index of the last element that satisfies the predicate p. If no element satisfies, None is returned.
inherited
lazyAppendedAll(Function0<RIterableOnce<A>> suffix) ILazyList<A>
Appends all elements produced by suffix lazily, without evaluating suffix until the end of this list is reached.
lift(int ix) Option<A>
Returns the element at index ix as a Some. If ix is outside the range of this collection, None is returned.
inherited
map<B>(Function1<A, B> f) ILazyList<B>
Returns a new collection by applying f to each element.
override
maxByOption<B>(Function1<A, B> f, Order<B> order) Option<A>
Finds the largest element in this collection by applying f to each element and using the given Order to find the greatest.
inherited
maxOption(Order<A> order) Option<A>
Finds the largest element in this collection according to the given Order.
inherited
minByOption<B>(Function1<A, B> f, Order<B> order) Option<A>
Finds the smallest element in this collection by applying f to each element and using the given Order to find the greatest.
inherited
minOption(Order<A> order) Option<A>
Finds the largest element in this collection according to the given Order.
inherited
mkString({String? start, String? sep, String? end}) String
Returns a String by using each elements toString(), adding sep between each element. If start is defined, it will be prepended to the resulting string. If end is defined, it will be appended to the resulting string.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
padTo(int len, A elem) ILazyList<A>
Returns a new collection with a length of at least len.
override
partition(Function1<A, bool> p) → (ILazyList<A>, ILazyList<A>)
Returns 2 collections as a tuple where the first tuple element will be a collection of elements that satisfy the given predicate p. The second item of the returned tuple will be elements that do not satisfy p.
override
partitionMap<A1, A2>(Function1<A, Either<A1, A2>> f) → (ILazyList<A1>, ILazyList<A2>)
Applies f to each element of this collection and returns a separate collection for all applications resulting in a Left and Right respectively.
override
patch(int from, RIterableOnce<A> other, int replaced) ILazyList<A>
Returns a new collection with replaced elements starting at from replaced by the elements of other.
override
permutations() RIterator<ILazyList<A>>
Will force evaluation
override
prepended(A elem) ILazyList<A>
Returns a new collection with elem added to the beginning.
override
prependedAll(RIterableOnce<A> prefix) ILazyList<A>
Returns a new collection with all elems added to the beginning.
override
prependedLazy(Function0<A> f) ILazyList<A>
Prepends a lazily-computed element f to the front of this list.
product() int

Available on RIterableOnce<int>, provided by the RIterableIntOps extension

Returns the product of all elements in this list
product() double

Available on RIterableOnce<double>, provided by the RIterableDoubleOps extension

Returns the product of all elements in this list
reduce(Function2<A, A, A> op) → A
Reduces this collection to a single value by applying op left to right.
inherited
reduceLeft(Function2<A, A, A> op) → A
Reduces from left to right. Throws if empty.
override
reduceLeftOption(Function2<A, A, A> op) Option<A>
Returns a summary values of all elements of this collection by applying f to each element, moving left to right.
inherited
reduceOption(Function2<A, A, A> op) Option<A>
Returns a summary values of all elements of this collection by applying f to each element, moving left to right.
inherited
reduceRight(Function2<A, A, A> op) → A
Reduces from right to left. Throws if empty.
inherited
reduceRightOption(Function2<A, A, A> op) Option<A>
Returns a summary values of all elements of this collection by applying f to each element, moving right to left.
inherited
removeAt(int idx) ILazyList<A>
Returns a new collection with the element at idx removed.
override
removeFirst(Function1<A, bool> p) ILazyList<A>
Returns a new lazy list with the first element satisfying p removed.
reverse() ILazyList<A>
Returns a new collection with the order of the elements reversed.
override
reverseIterator() RIterator<A>
Returns an iterator that will emit all elements in this collection, in reverse order.
inherited
sameElements(RIterable<A> that) bool
Returns true if this collection has the same elements, in the same order, as that.
override
scan<B>(B z, Function2<B, A, B> op) ILazyList<B>
Alias for scanLeft.
override
scanLeft<B>(B z, Function2<B, A, B> op) ILazyList<B>
Returns a new collection of running totals starting with z.
override
scanRight<B>(B z, Function2<A, B, B> op) ILazyList<B>
Will force evaluation
override
segmentLength(Function1<A, bool> p, [int from = 0]) int
Returns the length of the longest prefix starting at from where every element satisfies p.
inherited
slice(int from, int until) ILazyList<A>
Returns a new collection containing elements in the range [from, until).
override
sliding(int size, [int step = 1]) RIterator<ILazyList<A>>
Returns an iterator where elements are fixed size chunks of size n of the original collection. Each chunk is calculated by sliding a 'window' of size n over the original collection, moving the window step elements at a time.
override
sortBy<B>(Order<B> order, Function1<A, B> f) ILazyList<A>
Will force evaluation
override
sorted(Order<A> order) ILazyList<A>
Will force evaluation
override
sortWith(Function2<A, A, bool> lt) ILazyList<A>
Will force evaluation
override
span(Function1<A, bool> p) → (ILazyList<A>, ILazyList<A>)
Returns two collections: elements before and starting from the first element that does not satisfy p.
override
splitAt(int n) → (ILazyList<A>, ILazyList<A>)
Returns two collections: the first n elements and the remainder.
override
startsWith(RIterableOnce<A> that, [int offset = 0]) bool
Returns true if the beginning of this collection corresponds with that.
inherited
sum() int

Available on RIterableOnce<int>, provided by the RIterableIntOps extension

Returns the sum of all elements in this list
sum() double

Available on RIterableOnce<double>, provided by the RIterableDoubleOps extension

Returns the sum of all elements in this list
take(int n) ILazyList<A>
Returns a new collection containing only the first n elements.
override
takeRight(int n) ILazyList<A>
Returns a new collection with the last n elements of this collection. If n is greater than the size of this collection, the original collection is returned.
override
takeWhile(Function1<A, bool> p) ILazyList<A>
Returns a new collection of leading elements that satisfy p.
override
tapEach<U>(Function1<A, U> f) ILazyList<A>
Applies f to each element in this collection, discarding any results and returns this collection.
override
toIList() IList<A>
Returns an IList with the same elements as this collection.
inherited
toIMap() IMap<A, B>

Available on RIterable<(A, B)>, provided by the RIterableTuple2Ops extension

Creates a new IMap where each tuple element of this list is used to create a key and value respectively.
toIndexedSeq() IndexedSeq<A>
Returns an IndexedSeq with the same elements as this collection.
inherited
toISet() ISet<A>
Returns an ISet with the same elements as this collection, duplicates removed.
inherited
toIVector() IVector<A>
Returns an IVector with the same elements as this collection.
inherited
toList({bool growable = true}) List<A>
Returns a new List with the same elements as this collection.
inherited
toSeq() RSeq<A>
Returns a RSeq with the same elements as this collection.
inherited
toString() String
A string representation of this object.
override
traverseEither<B, C>(Function1<A, Either<B, C>> f) Either<B, ILazyList<C>>
Will force evaluation
override
traverseOption<B>(Function1<A, Option<B>> f) Option<ILazyList<B>>
Will force evaluation
override
unzip() → (RIterable<A>, RIterable<B>)

Available on RIterable<(A, B)>, provided by the RibsIterableTuple2Ops extension

Splits a collection of pairs into two separate collections.
updated(int index, A elem) ILazyList<A>
Returns a new collection with the element at index replaced by elem.
override
zip<B>(RIterableOnce<B> that) ILazyList<(A, B)>
Returns a new collection that combines corresponding elements from this collection and that as a tuple. The length of the returned collection will be the minimum of this collections size and the size of that.
override
zipAll<B>(RIterableOnce<B> that, A thisElem, B thatElem) ILazyList<(A, B)>
Returns a new collection that combines corresponding elements from this collection and that as a tuple. The length of the returned collection will be the maximum of this collections size and thes size of that. If this collection is shorter than that, thisElem will be used to fill in the resulting collection. If that is shorter, thatElem will be used to will in the resulting collection.
override
zipWithIndex() ILazyList<(A, int)>
Return a new collection with each element of this collection paired with it's respective index.
override

Operators

operator ==(Object other) bool
The equality operator.
override
operator [](int idx) → A
Returns the element at index idx.
override

Static Methods

builder<A>() ILazyListBuilder<A>
Returns a mutable builder that accumulates elements into an ILazyList.
continually<A>(A elem) ILazyList<A>
Returns an infinite lazy list where every element is elem.
empty<A>() ILazyList<A>
Returns an empty ILazyList.
override
fill<A>(int len, A elem) ILazyList<A>
Creates a lazy list of length len where every element is elem.
from<A>(RIterableOnce<A> coll) ILazyList<A>
Creates an ILazyList from any RIterableOnce.
override
ints(int start, [int step = 1]) ILazyList<int>
Returns an infinite lazy list of integers beginning at start, incrementing by step (default 1).
iterate<A>(Function0<A> start, Function1<A, A> f) ILazyList<A>
Returns an infinite lazy list produced by repeatedly applying f, starting from the value start().
tabulate<A>(int n, Function1<int, A> f) ILazyList<A>
Creates a lazy list of length n where element i is f(i).
unfold<A, S>(S initial, Function1<S, Option<(A, S)>> f) ILazyList<A>
Creates a lazy list by unfolding initial state with f.