Most discussion is on Typelevel Discord: https://discord.gg/bSQBZA3Ced
trait ContextShift[F[_]] {
def shift: F[Unit]
def evalOn[A](ec: ExecutionContext)(fa: F[A]): F[A]
}
Pull
to a Stream
R
needs to Unit
Stream
monad instance (which is on O
)
Pull
monad instance (which is on R
) is better for stateful combinators (so for the actual "streaming" aspect)
Pull
Pull[F, Nothing, Option(Chunk[O], Stream[F, O])]