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] [Publish]

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

Versions 1.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, 5.0.0.0, 5.0.0.1
Change log None available
Dependencies base (>=4.7 && <4.11), transformers (>=0.3 && <0.6), transformers-base (>=0.4 && <0.5) [details]
License MIT
Author Oleg Kiselyov, Amr Sabry, Cameron Swords, Ben Foppa
Maintainer suhailshergill@gmail.com
Category Control, Effect
Home page https://github.com/suhailshergill/extensible-effects
Source repo head: git clone https://github.com/suhailshergill/extensible-effects.git
Uploaded by shergill at 2018-01-03T07:45:36Z

Modules

[Index]

Flags

Manual Flags

NameDescriptionDefault
lib-werrorDisabled
force-openunion-51

Force usage of OpenUnion51.hs implementation

Disabled

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

Downloads

Maintainer's Corner

Package maintainers

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 https://gitter.im/suhailshergill/extensible-effects 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.