2
trait Parallelizable[+ParRepr <: Parallel]
4
trait PIterableLike[+T, +Repr <: Parallel] extends Parallel with Parallelizable[PIterableLike[T, Repr]]
6
trait PMap[K, V] extends PIterableLike[(K, V), PMap[K, V]]
7
trait PSet[T] extends PIterableLike[T, PSet[T]]
9
trait CIterableLike[+T, +Repr]
11
trait CSet[T] extends CIterableLike[T, CSet[T]] with Parallelizable[PSet[T]]
13
trait CMap[K, V] extends CIterableLike[(K, V), CMap[K, V]] with Parallelizable[PMap[K, V]]
19
val map: CMap[Int, CSet[Int]] = new CMap[Int, CSet[Int]] {}
20
val set: CSet[Int] = new CSet[Int] {}
22
// should infer type argument
23
//map.synchronized[CIterableLike[Any, Any] with Parallelizable[PIterableLike[Any, Parallel with Parallelizable[Parallel]]]] {
25
//map.synchronized[CIterableLike[Any, Any] with Parallelizable[PIterableLike[Any, Parallel]]] {
26
// or, maybe it could also infer existential types:
27
//map.synchronized[CIterableLike[Any, _] with Parallelizable[PIterableLike[Any, _]]] {