kotlin cycle

// https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.sequences/generate-sequence.html
fun <T> Sequence<T>.cycle(): Sequence<T> = generateSequence(seed = this) { this }.flatten()
fun <T> List<T>.cycle(): Sequence<T> = asSequence().cycle()

listOf(1, 2, 3).cycle().take(5).toList()