effin-0.2.1.2: effin.cabal
name: effin
version: 0.2.1.2
synopsis: A Typeable-free implementation of extensible effects
homepage: https://github.com/YellPika/effin
license: BSD3
license-file: LICENSE
author: Anthony Vandikas
maintainer: yellpika@gmail.com
copyright: (c) 2014 Anthony Vandikas
category: Control, Effect
build-type: Simple
cabal-version: >=1.10
description:
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 = eliminate
> (\x -> return (Right x))
> (\(Exception e) -> return (Left e))
.
Compare this to the corresponding code in extensible-effects
(<http://hackage.haskell.org/package/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,
thereby making effect handlers more composeable.
flag mtl
description: Enable MTL support
default: True
manual: True
library
exposed-modules:
Control.Effect,
Control.Effect.Bracket,
Control.Effect.Coroutine,
Control.Effect.Exception,
Control.Effect.Reader,
Control.Effect.Lift,
Control.Effect.List,
Control.Effect.State,
Control.Effect.Thread,
Control.Effect.Witness,
Control.Effect.Writer,
Control.Monad.Effect
other-modules:
Data.Index,
Data.Type.Row,
Data.Type.Nat
Data.Union
build-depends: base >= 4.7 && < 4.8
if flag(mtl)
build-depends: mtl >= 2.1 && < 3
hs-source-dirs: src
default-language: Haskell2010
ghc-options: -Wall
if flag(mtl)
cpp-options: -DMTL
source-repository head
type: git
location: git://github.com/YellPika/effin.git