blob: 42c695964e8e063ab0363e5bb64cf032d5cc2344 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
// test concurrent calls to Stream.tail
object Test {
def slowRange(from: Int, until: Int, cons: (Int, => Stream[Int]) => Stream[Int]): Stream[Int] = {
var current = from
def next: Stream[Int] = {
Thread.sleep(100)
if (current >= until) Stream.empty
else {
val stream = cons(current, next)
current += 1
stream
}
}
next
}
def testCons(cons: (Int, => Stream[Int]) => Stream[Int]): Unit = {
import scala.actors.Actor._
val stream = slowRange(0, 10, cons)
val main = self
actor { main ! stream.toList }
actor { main ! stream.toList }
val eval0 = receive { case list: List[Int] => list }
val eval1 = receive { case list: List[Int] => list }
println("Evaluation 0: " + eval0)
println("Evaluation 1: " + eval1)
}
def main(args: Array[String]) {
println("Testing standard cons.")
testCons(Stream.cons.apply(_, _))
}
}
|