.github/workflows | ||
bench | ||
examples | ||
src | ||
.gitignore | ||
cabal.haskell-ci | ||
CHANGELOG.md | ||
effective.cabal | ||
LICENSE | ||
README.md |
effective
A simple, yet powerful extensible effects library.
Main features:
-
Very fast.
-
Internals of the library are easy to reason about.
-
Correct semantics in presence of runtime exceptions (no more lost or discarded state).
-
Seamless integration with existing Haskell ecosystem (
exceptions
,monad-control
,unliftio-core
,resourcet
). -
Effects can be defined for either static (as fast as it gets, single interpretation) or dynamic (slower, multiple interpretations) dispatch depending on your needs.
Example
A Filesystem
effect with two handlers, one that runs in IO
and another that
uses an in-memory virtual file system can be found
here.
Resources
Resources that inspired the rise of this library and had a lot of impact on its design.
Talks:
-
Monad Transformer State by Michael Snoyman.
-
Effects for Less by Alexis King.
Blog posts:
-
ReaderT design pattern by Michael Snoyman.
-
Exceptions Best Practices by Michael Snoyman.