stkent
11/06/2018, 9:31 PMfun sieve(remainderSequence: Sequence<Int> = generateSequence(2) { it + 1 }): Sequence<Int> {
val newPrime = remainderSequence.first()
val newRemainderSequence = remainderSequence.filterNot { it % newPrime == 0 }
return sequence {
yield(newPrime)
}.plus(sieve(newRemainderSequence))
}
which I thought would remain lazy, but it appears not to. What am I missing?elizarov
11/06/2018, 9:33 PMsequence { }
and instead plus use yieldAllstkent
11/06/2018, 9:34 PMplus
that prevents this from working the same way as yieldAll
?plus
was marked as 'intermediate' so I thought the evaluation would still be lazy?Nikky
11/06/2018, 9:40 PMstkent
11/06/2018, 9:40 PMNikky
11/06/2018, 9:40 PMstkent
11/06/2018, 9:41 PMfun sieve(remainderSequence: Sequence<Int> = generateSequence(2) { it + 1 }): Sequence<Int> {
val newPrime = remainderSequence.first()
val newRemainderSequence = remainderSequence.filterNot { it % newPrime == 0 }
return sequence {
yield(newPrime)
yieldAll(sieve(newRemainderSequence))
}
}
Nikky
11/06/2018, 9:41 PMstkent
11/06/2018, 9:42 PMkarelpeeters
11/06/2018, 9:57 PMstkent
11/06/2018, 10:03 PMkarelpeeters
11/06/2018, 10:05 PMstkent
11/06/2018, 10:07 PMkarelpeeters
11/06/2018, 10:10 PMstkent
11/06/2018, 10:11 PMkarelpeeters
11/06/2018, 10:15 PMzip primes (tail primes)
.gildor
11/07/2018, 12:44 AMkarelpeeters
11/07/2018, 12:51 AMzipWithNext
-like).Nikky
11/07/2018, 1:15 AMkarelpeeters
11/07/2018, 1:15 AMNikky
11/07/2018, 1:16 AMkarelpeeters
11/07/2018, 1:16 AMNikky
11/07/2018, 1:17 AM% p == 0
but thats a whole different thing thenkarelpeeters
11/07/2018, 1:21 AMelizarov
11/07/2018, 4:11 AM