[ANN] effectful - an easy to use, performant extensible effects library

Hey everyone,

It’s taken ages, but finally the initial release of the effectful library is here :tada:

For people unfamiliar with it, it’s an extensible effects library that:

  • Is very fast (see benchmarks) when compared to other effect libraries and MTL as it’s internally a ReaderT over IO.
  • Has flexible and easy to use API for higher order effects (similar to MonadUnliftIO).
  • Fixes subtle issues of popular monad transformers.
  • Makes it easy to integrate with the existing ecosystem of libraries.

I started working on it after the eff effort was stalled due to a few unresolved issues.

Over the years of writing Haskell professionally I got more and more tired of:

  • Boilerplate related to mtl style effects (along with complexity of monad-control)
  • Subtle issues of monad transformers that people new to the language were re-encountering over and over again.
  • The monad-control vs unliftio-core split that made it not possible to use some libraries together.

effectful (as far as I know) solves these problems.

FYI, there are already a few adapters for existing libraries (resourcet-effectful is already released and several are brewing here).