effin: A Typeable-free implementation of extensible effects

[ bsd3, control, effect, library ] [ Propose Tags ]

This package implements extensible effects, and alternative to monad transformers. The original paper can be found at http://okmij.org/ftp/Haskell/extensible/exteff.pdf. The main differences between this library and the one described in the paper are that this library does not use the Typeable type class, and has a simpler API for handling effects.

For example, the following code implements a handler for exceptions:

runException :: Effect (Exception e ': es) a -> Effect es (Either e a)
runException =
    handle (\x -> return (Right x))
    $ eliminate (\(Exception e) -> return (Left e))
    $ defaultRelay

Compare this to the corresponding code in extensible-effects:

runExc :: Typeable e => Eff (Exc e :> r) a -> Eff r (Either e a)
runExc = loop . admin
  where
    loop (Val x) = return (Right x)
    loop (E u)   = handleRelay u loop (\(Exc e) -> return (Left e))

In particular:

  • Effect implementors are not required to do any recursion.

  • The functions for writing effect handlers can be easily composed.

Flags

Manual Flags

NameDescriptionDefault
mtl

Enable MTL support

Enabled

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

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.1.0, 0.2.0.0, 0.2.1.0, 0.2.1.1, 0.2.1.2, 0.2.1.3, 0.3.0.1, 0.3.0.2, 0.3.0.3
Dependencies base (>=4.7 && <4.8), mtl (>=2.1 && <3) [details]
License BSD-3-Clause
Copyright (c) 2014 Anthony Vandikas
Author Anthony Vandikas
Maintainer yellpika@gmail.com
Category Control, Effect
Home page https://github.com/YellPika/effin
Source repo head: git clone git://github.com/YellPika/effin.git
Uploaded by AnthonyVandikas at 2014-05-11T18:07:42Z
Distributions
Reverse Dependencies 3 direct, 0 indirect [details]
Downloads 8589 total (27 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]