Integrations¶
dotty-cps-async itself provides type classes for monads, available without external dependencies: this is FutureAsyncMonad , JVM-only Java CompletableFuture and JS-only js.Promise and JSFuture .
Third-party effect stacks are provided in external modules.
io.github.dotty-cps-async/cps-async-connect¶
GitHub project: https://github.com/rssh/cps-async-connect
Cats Effect¶
Add dependency cps-async-connect-cats-effect to your build.sbt to integrate Cats Effect :
libraryDependencies += "org.typelevel" %% "cats-effect" % catsEffectVersion libraryDependencies += "io.github.dotty-cps-async" %%% "cps-async-connect-cats-effect" % cpsAsyncConnectVersion
For loom-based invocation of HO arguments on JDK-21+ also add cps-async-connect-cats-effect-loom artifact.
libraryDependencies += "io.github.dotty-cps-async" %%% "cps-async-connect-cats-effect-loom" % cpsAsyncConnectVersion
Cats Effect GitHub : typelevel/cats-effect, Maven : org.typelevel»cats-effect.
Note: Typelevel’s project cats-effect-cps also provides async/await syntax support for Cats Effect.
Monix¶
Add dependency cps-async-connect-monix to your build.sbt to integrate Monix :
libraryDependencies += "io.monix" %% "monix" % "3.4.1" libraryDependencies += "io.github.dotty-cps-async" %%% "cps-async-connect-monix" % cpsAsyncConnectVersion
Monix GitHub : monix/monix, Maven : io.monix.
Scalaz IO¶
Add dependency cps-async-connect-scalaz to your build.sbt to integrate Scalaz IO:
libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.4.0-M12" libraryDependencies += "org.scalaz" %% "scalaz-effect" % "7.4.0-M12" libraryDependencies += "io.github.dotty-cps-async" %%% "cps-async-connect-scalaz" % cpsAsyncConnectVersion
Scalaz IO GitHub : scalaz/scalaz, Maven : org.scalaz.
ZIO and ZIO Streams¶
Add dependency cps-async-connect-zio to your build.sbt to integrate ZIO :
For 1.0.x series:
libraryDependencies += "dev.zio" %% "zio" % zio1Version libraryDependencies += "io.github.dotty-cps-async" %%% "cps-async-connect-zio" % cpsAsyncConnectVersion
For 2.0.x series:
libraryDependencies += "dev.zio" %% "zio" % zio2Version libraryDependencies += "io.github.dotty-cps-async" %% "cps-async-connect-zio2" % cpsAsyncConnectVersion
Akka Stream¶
Add dependency cps-async-connect-akka-stream to your build.sbt to integrate Lightbend’s Akka Stream :
libraryDependencies += "com.typesafe.akka" %% "akka-stream" % akkaVersion libraryDependencies += "io.github.dotty-cps-async" %%% "cps-async-connect-akka-stream" % cpsAsyncConnectVersion
Akka Stream GitHub : akka/akka, Maven : com.typesafe.akka»akka-stream.
FS2 Stream¶
Add dependency cps-async-connect-fs2 to your build.sbt to integrate Typelevel’s FS2 :
libraryDependencies += "co.fs2" %% "fs2-core" % fs2Version libraryDependencies += "co.fs2" %% "fs2-io" % fs2Version libraryDependencies += "io.github.dotty-cps-async" %%% "cps-async-connect-fs2" % cpsAsyncConnectVersion
FS2 GitHub : typelevel/fs2, Maven : co.fs2.
Probability Monad¶
Add dependency cps-async-connect-probability-monad to your build.sbt.
typelevel/cats-effect-cps¶
GitHub project: https://github.com/typelevel/cats-effect-cps
cats-effect-cps is an experimental library to support uniform async/await syntax for Cats Effect in Scala 2 and Scala 3, integrated with the Typelevel ecosystem.
Call for additions:¶
If you have implemented CpsMonad support for some effect stack and want to mention it here - please, send a pull request about this.