{-# LANGUAGE Safe #-} {-# LANGUAGE PatternSynonyms #-} -- | 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 -- * Lifting operations , Lift(..), Lifted, LiftedBase , lift, runLift , catchDynE , HandlerDynE(..), catchesDynE -- * Open Unions , OpenUnion.Union , OpenUnion.Member , inj , prj, pattern OpenUnion.U0' , decomp, pattern OpenUnion.U0, pattern OpenUnion.U1 , SetMember , weaken -- * Helper functions that are used for implementing effect-handlers , Handle(..) , Relay(..) , handle_relay', respond_relay' , raise , send -- * Arrow types and compositions , Arr , Arrs , first , singleK , qApp , (^$) , arr , ident , comp , (^|>) , qComp , qComps ) where import Data.OpenUnion as OpenUnion import Control.Eff.Internal