{-# LANGUAGE Safe #-} {-# LANGUAGE ExplicitNamespaces #-} -- | A monadic library for implementing effectful computation in a modular way. -- -- This module provides the @Eff@ monad - the base type for all effectful -- computation. -- The @Member@ typeclass is the main interface for describing which effects -- are necessary for a given function. -- -- Consult the @Control.Eff.QuickStart@ module and the readme for gentle -- introductions. -- -- To use extensible effects effectively some language extensions are -- necessary/recommended. -- -- @ -- {-\# LANGUAGE ScopedTypeVariables \#-} -- {-\# LANGUAGE FlexibleContexts \#-} -- {-\# LANGUAGE MonoLocalBinds \#-} -- @ -- module Control.Eff ( -- * Effect type Internal.run , Internal.Eff -- * Lift IO computations , Internal.lift, Internal.runLift , Internal.catchDynE , Internal.HandlerDynE(..), Internal.catchesDynE , Internal.Lift(..), Internal.Lifted, Internal.LiftedBase -- * Effect list , OpenUnion.Member , OpenUnion.SetMember , type(<::) ) where import Control.Eff.Internal as Internal import Data.OpenUnion as OpenUnion