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 an “open union” of effects described by Oleg Kiselyov in Freer monads, more extensible effects.

You can learn more in the following sections, it is recommended to read them in order if you are new to eff:

  1. installation and imports
  2. your first effects
  3. standard effects in eff: Reader, Writer, Eval, State,…
  4. tutorial
  5. create your own effects
  6. interpret and manipulate effect stacks
  7. use Member implicits
  8. use an applicative evaluation
  9. tips and tricks
  10. community resources


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.