sequence

Builds a Sequence lazily yielding values one by one.

fun <T> sequence(block: suspend SequenceScope<T>.() -> Unit): Sequence<T>(source)
import kotlin.sequences.*

fun main() {
    val numbers = sequence {
        // Lazy generation of numbers 1..10
        for (i in 1..10) {
            yield(i)
        }
    }

    // Consume the sequence (the values are generated only when needed)
    val sum = numbers.sum()
    println("Sum of 1..10 is $sum")
}

Source