시퀀스(sequence)

중간 리스트를 생성하지 않고 리스트 스트림 연산을 수행할 수 있다.

termination operation이 호출될때 연산이 수행된다.

val primes: Sequence<Int> = sequence {
	var numbers = generateSequence(2) { it + 1 }

	while (true) {
		val prime = numbers.first()
		yield(prime)
		numbers = numbers.drop(1)
										 .filter { it % prime != 0 }
	}
}

print(primes.take(10).toList())

레퍼런스

https://medium.com/@mook2_y2/코틀린-입문-스터디-15-sequences-52cfca1805c8