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.

[maintain]

Warnings:

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]

Properties

Versions1.0, 1.1.0, 1.2.0, 1.2.1, 1.4.1, 1.5.0, 1.6.0, 1.7.1, 1.7.1.0, 1.7.1.1, 1.7.1.2, 1.7.2.1, 1.8.0.0, 1.8.1.0, 1.9.0.0, 1.9.0.1, 1.9.1.0, 1.9.2.2, 1.10.0.1, 1.11.0.0, 1.11.0.1, 1.11.0.2, 1.11.0.3, 1.11.0.4, 1.11.1.0, 2.0.0.0, 2.0.0.2, 2.0.1.0, 2.1.0.0, 2.2.1.0, 2.3.0.0, 2.3.0.1, 2.4.0.0, 2.4.0.0, 2.5.0.0, 2.5.1.0, 2.5.1.2, 2.5.2.0, 2.5.3.0, 2.6.0.0, 2.6.0.1, 2.6.0.2, 2.6.0.3, 2.6.1.0, 2.6.1.1, 2.6.2.0, 2.6.3.0, 3.0.0.0, 3.1.0.0, 3.1.0.1, 3.1.0.2, 4.0.0.0
Change logNone available
Dependenciesbase (>=4.7 && <4.11), transformers (>=0.3 && <0.6), transformers-base (==0.4.*) [details]
LicenseMIT
AuthorOleg Kiselyov, Amr Sabry, Cameron Swords, Ben Foppa
Maintainersuhailshergill@gmail.com
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

Modules

[Index]

Flags

NameDescriptionDefaultType
lib-werrorDisabledManual
force-openunion-51

Force usage of OpenUnion51.hs implementation

DisabledManual

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

Downloads

Maintainers' corner

For package maintainers and hackage trustees


Readme for extensible-effects-2.4.0.0

[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

Advantages

Limitations

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 :)

Disadvantages

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.