Skip to content

Instantly share code, notes, and snippets.

@LukaJCB
Created September 10, 2017 15:09
Show Gist options
  • Save LukaJCB/31b47c3de1843e7b80edc59f9d5321c0 to your computer and use it in GitHub Desktop.
Save LukaJCB/31b47c3de1843e7b80edc59f9d5321c0 to your computer and use it in GitHub Desktop.
ParallelTaglessFinal
import cats._
import cats.implicits._
trait Alg[M[_]] {
def doSomething(s: String): M[Unit]
}
object AlgVect extends Alg[Vector] {
def doSomething(s: String): Vector[Unit] = Vector(println(s))
}
def program[M[_]: Monad, F[_]](list: Vector[String])(M: Alg[M])(implicit P: Parallel[M, F]) =
list.parTraverse(M.doSomething)
program(Vector("Hello", "World"))(AlgVect)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment