extensible-effects: An Alternative to Monad Transformers

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.



This package introduces datatypes for typeclass-constrained effects, as an alternative to monad-transformer based (datatype-constrained) approach of multi-layered effects. For more information, see the original paper at http://okmij.org/ftp/Haskell/extensible/exteff.pdf. Any help is appreciated!

[Skip to ReadMe]


Versions1.0, 1.1.0, 1.2.0, 1.2.1, 1.4.1, 1.5.0, 1.6.0, 1.7.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Change logNone available
Dependenciesbase (>=4.7 && <4.11), transformers (>=0.3 && <0.6), transformers-base (==0.4.*) [details]
AuthorOleg Kiselyov, Amr Sabry, Cameron Swords, Ben Foppa
CategoryControl, Effect
Home pagehttps://github.com/suhailshergill/extensible-effects
Source repositoryhead: git clone https://github.com/suhailshergill/extensible-effects.git
UploadedWed Jan 3 07:45:36 UTC 2018 by shergill





Force usage of OpenUnion51.hs implementation


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainers' corner

For package maintainers and hackage trustees

Readme for extensible-effects-

[back to package description]

extensible-effects is based on the work Extensible Effects: An Alternative to Monad Transformers. Please read the paper and the followup freer paper for details. Additional explanation behind the approach can be found on Oleg's website.

Build Status Join the chat at <a href="https://gitter.im/suhailshergill/extensible-effects">https://gitter.im/suhailshergill/extensible-effects</a> Stories in Ready Stories in progress



Current implementation only supports GHC version 7.8 and above

This is not a fundamental limitation of the design or the approach, but there is an overhead with making the code compatible across a large number of GHC versions. If this is needed, patches are welcome :)


Ambiguity-Flexibility tradeoff

A useful pattern to manage the ambiguity-flexibility tradeoff is to specialize the call to the handler of effects using type application or type annotation. Examples of this pattern can be seen in Example/Test.hs.