in-other-words-0.1.0.0: src/Control/Effect.hs
module Control.Effect
( -- * Core class
Carrier(Derivs)
, Effect
, RepresentationalEff
-- * Effect membership
, Eff
, Effs
, Bundle
, Member
-- * Sending actions of effects
, send
-- * Running final monad
, run
, runM
-- * Integrating external monads
, Embed(..)
, embed
-- * Effect interpretation
, interpretSimple
, SimpleInterpreterFor
, interpretViaHandler
, Handler(..)
, interpret
, InterpreterFor
, EffHandler
-- * Effect reinterpretation
, reinterpretSimple
, reinterpretViaHandler
, reinterpret
-- * Threading constraints
, Threaders
, ReaderThreads
-- * Effect Introduction
, intro1
, intro
, introUnder1
, introUnder
, introUnderMany
, HeadEff
, HeadEffs
-- * Combining effect carriers
, CompositionC
, runComposition
-- * Other utilities
, Effly(..)
, subsume
-- * Reexports from other modules
, MonadBase(..)
, MonadTrans(..)
-- * Carriers and other misc. types
, RunC
, RunMC
, InterpretSimpleC
, InterpretC
, InterpretReifiedC
, ReifiesHandler
, ViaReifiedH
, ReinterpretSimpleC
, ReinterpretC
, ReinterpretReifiedC
, IntroConsistent
, IntroC
, IntroTopC
, IntroUnderC
, IntroUnderManyC
, KnownList
, SubsumeC
) where
import Control.Effect.Internal
import Control.Effect.Internal.Effly
import Control.Effect.Internal.KnownList
import Control.Effect.Internal.Membership
import Control.Effect.Internal.Union
import Control.Effect.Embed
import Control.Effect.Carrier.Internal.Compose
import Control.Effect.Carrier.Internal.Intro
import Control.Effect.Carrier.Internal.Interpret
import Control.Monad.Base
import Control.Monad.Trans
-- | A useful type synonym for the type of 'interpret' provided a handler
--
-- @m@ is left polymorphic so that you may place @'Eff'/s@ constraints on it.
type InterpreterFor e m =
forall x
. InterpretReifiedC e m x
-> m x
-- | A useful type synonym for the type of 'interpretSimple' provided a handler
--
-- @m@ is left polymorphic so that you may place @'Eff'/s@ constraints on it.
type SimpleInterpreterFor e m =
forall x p
. Threaders '[ReaderThreads] m p
=> InterpretSimpleC e m x
-> m x