name: effin version: 0.3.0.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, an 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, does not require that effects implement the Functor type class, and has a simpler API for handling effects. . For example, the following code implements a handler for exceptions: . > newtype Exception e = Throw e > > runException :: Effect (Exception e :+ es) a -> Effect es (Either e a) > runException = eliminate > (\x -> return (Right x)) > (\(Throw e) k -> return (Left e)) . 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, 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.10 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