name: effin version: 0.1.0.1 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 . 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. flag mtl description: Enable MTL support default: True manual: True library exposed-modules: Control.Effect, Control.Effect.Coroutine, Control.Effect.Exception, Control.Effect.Lift, Control.Effect.List, Control.Effect.Reader, Control.Effect.State, Control.Effect.Thread, Control.Effect.Union, Control.Effect.Writer, Control.Monad.Effect other-modules: 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