-- | This module exports functions, types, and typeclasses necessary for -- implementing a custom effect and/or effect handler. -- module Control.Eff.Extend ( -- * The effect monad Eff(..) , run , eff, impurePrj, impureDecomp -- * Lifting operations , Lift(..), Lifted, LiftedBase , lift, runLift , catchDynE , HandlerDynE(..), catchesDynE -- * Open Unions , OpenUnion.Union , OpenUnion.Member , inj , prj , decomp , SetMember , weaken -- * Helper functions that are used for implementing effect-handlers , Handle, handle , Relay, relay , handle_relay , handle_relay' , respond_relay , respond_relay' , raise , send -- * Arrow types and compositions , Arr , Arrs , first , singleK , qApp , (^$) , arr , ident , comp , (^|>) , qComp , qComps, (^|$^) , (~^), qThen, andThen ) where import Data.OpenUnion as OpenUnion import Control.Eff.Internal