This gist is part of a blog post. Check it out at:
http://jasonrudolph.com/blog/2011/08/09/programming-achievements-how-to-level-up-as-a-developer
import cats.effect.{Effect, IO} | |
import fs2._ | |
import scala.concurrent.ExecutionContext | |
def runConcat[F[_], A](first: Stream[F, A], second: Stream[F, A])( | |
implicit F: Effect[F], | |
ec: ExecutionContext): Stream[F, A] = { | |
type Step = AsyncPull[F, Option[(Segment[A, Unit], Stream[F, A])]] | |
def readFull(s: Step): Pull[F, A, Unit] = |
This gist is part of a blog post. Check it out at:
http://jasonrudolph.com/blog/2011/08/09/programming-achievements-how-to-level-up-as-a-developer