When you write Process(1, 2, 3) , you get Process[Nothing, Int] , which is a process that has no idea of ββthe specific context from which it can make external requests - it is just going to emit some things. This means that you can treat it as Process0 , for example:
scala> Process(1, 2, 3).toList res0: List[Int] = List(1, 2, 3)
It also means that you cannot run it, because the driver context is required to run it.
Since Process is covariant in its parameter of the first type, you can use it in situations where you have a more specific type for this context:
scala> import scalaz.concurrent.Task import scalaz.concurrent.Task scala> (Process(1, 2, 3): Process[Task, Int]).runLog.run res1: IndexedSeq[Int] = Vector(1, 2, 3)
Or:
scala> Process(1, 2, 3).flatMap(i => Process.fill(3)(i)).runLog.run res2: IndexedSeq[Int] = Vector(1, 1, 1, 2, 2, 2, 3, 3, 3)
I agree that the error is a bit confusing, but with normal use, you usually do not encounter this situation, since you will use this process in a context that will set its type to something like Process[Task, Int] .