- Notifications
You must be signed in to change notification settings - Fork79
Eff monad for cats -https://atnos-org.github.io/eff
License
atnos-org/eff
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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 inOleg Kiselyov inFreer monads, more extensible effects.
You can learn more in the User Guide:
- your first effects
- included effects:
Reader
,Writer
,Eval
,State
,... - create your own effects
- use Member implicits
- working with different effect stacks
- a tutorial similar to the cats' tutorial for Free monads
You can also check outthis presentation at flatMap Oslo 2016 (slides).
Eff is published for Scala 2.12, 2.13 and 3.eff
core is available for the JVM, ScalaJS and scala-native. Sbt dependency:
// check maven badge above for latest versionlibraryDependencies+="org.atnos"%%"eff"%"7.0.6"// to write types like Reader[String, *]libraryDependencies++= {if (scalaBinaryVersion.value=="3") {Nil }else {Seq(compilerPlugin("org.typelevel"%%"kind-projector"%"0.13.3" crossCrossVersion.full)) }}scalacOptions++= {if (scalaBinaryVersion.value=="3") {Seq("-Ykind-projector") }else {Nil }}// to get types like Reader[String, *] (with more than one type parameter) correctly inferred for scala 2.12.xscalacOptions++= {if (scalaBinaryVersion.value=="2.12") {Seq("-Ypartial-unification") }else {Nil }}
eff is aTypelevel project. This means we embrace pure, typeful, functional programming,and provide a safe and friendly environment for teaching, learning, and contributing as described in theScala 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.
- eff-zio eff extension for ZIO effects.
About
Eff monad for cats -https://atnos-org.github.io/eff