Eff monad for cats - https://atnos-org.github.io/eff
Extensible effects are an alternative to monad transformers for computing with effects in a functional way. This library is based on the "free-er" monad and extensible effects described in Oleg Kiselyov in Freer monads, more extensible effects.
You can learn more in the User Guide:
Reader,
Writer,
Eval,
State,...
You can also check out this presentation at flatMap Oslo 2016 (slides).
Eff is published for Scala 2.12 and 2.13.
effcore is available for the JVM and ScalaJS. Sbt dependency:
// check maven badge above for latest version libraryDependencies += "org.atnos" %% "eff" % "5.14.0"// to write types like Reader[String, *] addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.11.3" cross CrossVersion.full)
// to get types like Reader[String, *] (with more than one type parameter) correctly inferred for scala 2.12.x scalacOptions += "-Ypartial-unification"
eff is a Typelevel project. This means we embrace pure, typeful, functional programming, and provide a safe and friendly environment for teaching, learning, and contributing as described in the Scala Code of Conduct.
Feel free to open an issue if you notice a bug, have an idea for a feature, or have a question about the code. Pull requests are also gladly accepted.