// Fibonacci using an infinite sequence fun fibonacci() = sequence { var terms = Pair(0, 1) // this sequence is infinite while (true) { yield(terms.first) terms = Pair(terms.second, terms.first + terms.second) } } fun main() { println(fibonacci().take(10).toList()) // [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] }