Popularity
6.9
Declining
Activity
0.0
Stable
19
6
2

Monthly Downloads: 29
Programming language: Haskell
License: MIT License
Tags: Control     Effect    
Latest version: v0.1.0.1

effect-handlers alternatives and similar packages

Based on the "effect" category.
Alternatively, view effect-handlers alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of effect-handlers or a related project?

Add another 'effect' Package

README

effect-handlers

This is an extensible effects library for Haskell taking inspiration from the Eff language.

See these papers for the ideas and theory behind the library:

Implementation wise it's most close to extensible-effects (also see the Extensible Effects paper) but it implements deep handlers instead of shallow.

What does this library provide?

There is the Eff monad type and modules for pre-implemented effects.

  • Exception
  • IO
  • Reader
  • Search
  • State
  • Writer

It is easy to define your own effects and combine them.

Example

Most of the types are inferred, you only need to provide enough to tell the compiler how to specialize some effect handlers (e.g. readerHandler).

import Control.Effects.Cont.Eff
import Control.Effects.Cont.Reader
import Control.Effects.Cont.Exception

program = do
  v <- ask
  if v < 15 
  then throw $ show v
  else return (v+1)

run n = runPure 
                 . handle exceptionHandler 
                 . handle (readerHandler n)

res :: Integer -> Either String Integer
res n = run n program

Documentation

Haddock docs are available online