fused-effects-1.0.2.0: A fast, flexible, fused effect system.

Control.Algebra

Contents

Description

The Algebra class is the mechanism with which effects are interpreted.

An instance of the Algebra class defines an interpretation of an effect signature atop a given monad.

Since: 1.0.0.0

Synopsis

# Documentation

class (HFunctor sig, Monad m) => Algebra sig m | m -> sig where Source #

The class of carriers (results) for algebras (effect handlers) over signatures (effects), whose actions are given by the alg method.

Since: 1.0.0.0

Methods

alg :: sig m a -> m a Source #

Construct a value in the carrier for an effect signature (typically a sum of a handled effect and any remaining effects).

#### Instances

Instances details
 Source # Instance detailsDefined in Control.Algebra Methods Source # Instance detailsDefined in Control.Algebra Methodsalg :: Empty Maybe a -> Maybe a Source # Source # Instance detailsDefined in Control.Algebra Methodsalg :: NonDet [] a -> [a] Source # Algebra sig m => Algebra sig (Alt m) Source # This instance permits effectful actions to be lifted into the Alt monad, which eases the invocation of repeated alternation with <|>:a <|> b <|> c <|> dis equivalent togetAlt (mconcat [a, b, c, d])Since: 1.0.1.0 Instance detailsDefined in Control.Algebra Methodsalg :: sig (Alt m) a -> Alt m a Source # Algebra sig m => Algebra sig (Ap m) Source # This instance permits effectful actions to be lifted into the Ap monad given a monoidal return type, which can provide clarity when chaining calls to mappend.mappend <$> act1 <*> (mappend <$> act2 <*> act3)is equivalent togetAp (act1 <> act2 <> act3)Since: 1.0.1.0 Instance detailsDefined in Control.Algebra Methodsalg :: sig (Ap m) a -> Ap m a Source # Algebra sig m => Algebra sig (IdentityT m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: sig (IdentityT m) a -> IdentityT m a Source # Source # Instance detailsDefined in Control.Algebra Methodsalg :: Lift IO IO a -> IO a Source # Source # Instance detailsDefined in Control.Algebra Methods Monad m => Algebra (Lift m) (LiftC m) Source # Instance detailsDefined in Control.Carrier.Lift Methodsalg :: Lift m (LiftC m) a -> LiftC m a Source # Algebra (Error e) (Either e) Source # Instance detailsDefined in Control.Algebra Methodsalg :: Error e (Either e) a -> Either e a Source # Monoid w => Algebra (Writer w) ((,) w) Source # Instance detailsDefined in Control.Algebra Methodsalg :: Writer w ((,) w) a -> (w, a) Source # Algebra (Reader r) ((->) r :: Type -> Type) Source # Instance detailsDefined in Control.Algebra Methodsalg :: Reader r ((->) r) a -> r -> a Source # (Algebra sig m, Effect sig) => Algebra (Choose :+: sig) (ChooseC m) Source # Instance detailsDefined in Control.Carrier.Choose.Church Methodsalg :: (Choose :+: sig) (ChooseC m) a -> ChooseC m a Source # (Algebra sig m, Effect sig) => Algebra (Empty :+: sig) (EmptyC m) Source # Instance detailsDefined in Control.Carrier.Empty.Maybe Methodsalg :: (Empty :+: sig) (EmptyC m) a -> EmptyC m a Source # (Algebra sig m, Effect sig) => Algebra (NonDet :+: sig) (NonDetC m) Source # Instance detailsDefined in Control.Carrier.NonDet.Church Methodsalg :: (NonDet :+: sig) (NonDetC m) a -> NonDetC m a Source # (MonadIO m, Algebra sig m) => Algebra (Trace :+: sig) (TraceC m) Source # Instance detailsDefined in Control.Carrier.Trace.Printing Methodsalg :: (Trace :+: sig) (TraceC m) a -> TraceC m a Source # Algebra sig m => Algebra (Trace :+: sig) (TraceC m) Source # Instance detailsDefined in Control.Carrier.Trace.Ignoring Methodsalg :: (Trace :+: sig) (TraceC m) a -> TraceC m a Source # (Algebra sig m, Effect sig) => Algebra (Trace :+: sig) (TraceC m) Source # Instance detailsDefined in Control.Carrier.Trace.Returning Methodsalg :: (Trace :+: sig) (TraceC m) a -> TraceC m a Source # (Algebra sig m, Effect sig) => Algebra (Fail :+: sig) (FailC m) Source # Instance detailsDefined in Control.Carrier.Fail.Either Methodsalg :: (Fail :+: sig) (FailC m) a -> FailC m a Source # (Algebra sig m, Effect sig) => Algebra (Fresh :+: sig) (FreshC m) Source # Instance detailsDefined in Control.Carrier.Fresh.Strict Methodsalg :: (Fresh :+: sig) (FreshC m) a -> FreshC m a Source # (Algebra sig m, Effect sig) => Algebra (Cut :+: (NonDet :+: sig)) (CutC m) Source # Instance detailsDefined in Control.Carrier.Cut.Church Methodsalg :: (Cut :+: (NonDet :+: sig)) (CutC m) a -> CutC m a Source # (Algebra sig m, Effect sig) => Algebra (Cull :+: (NonDet :+: sig)) (CullC m) Source # Instance detailsDefined in Control.Carrier.Cull.Church Methodsalg :: (Cull :+: (NonDet :+: sig)) (CullC m) a -> CullC m a Source # Algebra sig m => Algebra (Reader r :+: sig) (ReaderT r m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (Reader r :+: sig) (ReaderT r m) a -> ReaderT r m a Source # Algebra sig m => Algebra (Reader r :+: sig) (ReaderC r m) Source # Instance detailsDefined in Control.Carrier.Reader Methodsalg :: (Reader r :+: sig) (ReaderC r m) a -> ReaderC r m a Source # (Algebra sig m, Effect sig) => Algebra (State s :+: sig) (StateT s m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (State s :+: sig) (StateT s m) a -> StateT s m a Source # (Algebra sig m, Effect sig) => Algebra (State s :+: sig) (StateT s m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (State s :+: sig) (StateT s m) a -> StateT s m a Source # (Algebra sig m, Effect sig) => Algebra (State s :+: sig) (StateC s m) Source # Instance detailsDefined in Control.Carrier.State.Strict Methodsalg :: (State s :+: sig) (StateC s m) a -> StateC s m a Source # (Algebra sig m, Effect sig) => Algebra (State s :+: sig) (StateC s m) Source # Instance detailsDefined in Control.Carrier.State.Lazy Methodsalg :: (State s :+: sig) (StateC s m) a -> StateC s m a Source # (Algebra sig m, Effect sig) => Algebra (Throw e :+: sig) (ThrowC e m) Source # Instance detailsDefined in Control.Carrier.Throw.Either Methodsalg :: (Throw e :+: sig) (ThrowC e m) a -> ThrowC e m a Source # (Algebra sig m, Effect sig) => Algebra (Error e :+: sig) (ExceptT e m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (Error e :+: sig) (ExceptT e m) a -> ExceptT e m a Source # (Algebra sig m, Effect sig) => Algebra (Error e :+: sig) (ErrorC e m) Source # Instance detailsDefined in Control.Carrier.Error.Either Methodsalg :: (Error e :+: sig) (ErrorC e m) a -> ErrorC e m a Source # (Algebra sig m, Effect sig, Monoid w) => Algebra (Writer w :+: sig) (WriterT w m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (Writer w :+: sig) (WriterT w m) a -> WriterT w m a Source # (Algebra sig m, Effect sig, Monoid w) => Algebra (Writer w :+: sig) (WriterT w m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (Writer w :+: sig) (WriterT w m) a -> WriterT w m a Source # (Monoid w, Algebra sig m, Effect sig) => Algebra (Writer w :+: sig) (WriterC w m) Source # Instance detailsDefined in Control.Carrier.Writer.Strict Methodsalg :: (Writer w :+: sig) (WriterC w m) a -> WriterC w m a Source # (HFunctor eff, HFunctor sig, Reifies s (Handler eff m), Monad m, Algebra sig m) => Algebra (eff :+: sig) (InterpretC s eff m) Source # Instance detailsDefined in Control.Carrier.Interpret Methodsalg :: (eff :+: sig) (InterpretC s eff m) a -> InterpretC s eff m a Source # (LabelledMember label sub sig, HFunctor sub, Algebra sig m) => Algebra (sub :+: sig) (UnderLabel label sub m) Source # Instance detailsDefined in Control.Effect.Labelled Methodsalg :: (sub :+: sig) (UnderLabel label sub m) a -> UnderLabel label sub m a Source # (Algebra sig m, Effect sig, Monoid w) => Algebra (Reader r :+: (Writer w :+: (State s :+: sig))) (RWST r w s m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (Reader r :+: (Writer w :+: (State s :+: sig))) (RWST r w s m) a -> RWST r w s m a Source # (Algebra sig m, Effect sig, Monoid w) => Algebra (Reader r :+: (Writer w :+: (State s :+: sig))) (RWST r w s m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (Reader r :+: (Writer w :+: (State s :+: sig))) (RWST r w s m) a -> RWST r w s m a Source # (Algebra (eff :+: sig) (sub m), HFunctor eff, HFunctor sig) => Algebra (Labelled label eff :+: sig) (Labelled label sub m) Source # Instance detailsDefined in Control.Effect.Labelled Methodsalg :: (Labelled label eff :+: sig) (Labelled label sub m) a -> Labelled label sub m a Source #

run :: Identity a -> a Source #

Run an action exhausted of effects to produce its final result value.

Since: 1.0.0.0

type Has eff sig m = (Members eff sig, Algebra sig m) Source #

m is a carrier for sig containing eff.

Note that if eff is a sum, it will be decomposed into multiple Member constraints. While this technically allows one to combine multiple unrelated effects into a single Has constraint, doing so has two significant drawbacks:

1. Due to a problem with recursive type families, this can lead to significantly slower compiles.
2. It defeats ghc’s warnings for redundant constraints, and thus can lead to a proliferation of redundant constraints as code is changed.

send :: (Member eff sig, Algebra sig m) => eff m a -> m a Source #

Construct a request for an effect to be interpreted by some handler later on.

# Re-exports

data (f :+: g) (m :: * -> *) k infixr 4 Source #

Higher-order sums are used to combine multiple effects into a signature, typically by chaining on the right.

Constructors

 L (f m k) R (g m k)

#### Instances

Instances details
 Source # Instance detailsDefined in Control.Algebra Methodsalg :: NonDet [] a -> [a] Source # LabelledMember label l r => LabelledMember (label :: k) l (l' :+: r) Source # Right-recursion: if t is a member of r, we can inject it into r in O(n), followed by lifting that into l :+: r in O(1). Instance detailsDefined in Control.Effect.Labelled MethodsinjLabelled :: forall (m :: Type -> Type) a. Labelled label l m a -> (l' :+: r) m a Source # LabelledMember (label :: k) l (Labelled label l :+: r) Source # Left-occurrence: if t is at the head of a signature, we can inject it in O(1). Instance detailsDefined in Control.Effect.Labelled MethodsinjLabelled :: forall (m :: Type -> Type) a. Labelled label l m a -> (Labelled label l :+: r) m a Source # LabelledMember label t (l1 :+: (l2 :+: r)) => LabelledMember (label :: k) t ((l1 :+: l2) :+: r) Source # Left-recursion: if t is a member of l1 :+: l2 :+: r, then we can inject it into (l1 :+: l2) :+: r by injection into a right-recursive signature, followed by left-association. Instance detailsDefined in Control.Effect.Labelled MethodsinjLabelled :: forall (m :: Type -> Type) a. Labelled label t m a -> ((l1 :+: l2) :+: r) m a Source # Member l r => Member l (l' :+: r) Source # Right-recursion: if t is a member of r, we can inject it into r in O(n), followed by lifting that into l :+: r in O(1). Instance detailsDefined in Control.Effect.Sum Methodsinj :: forall (m :: Type -> Type) a. l m a -> (l' :+: r) m a Source # Member l (l :+: r) Source # Left-occurrence: if t is at the head of a signature, we can inject it in O(1). Instance detailsDefined in Control.Effect.Sum Methodsinj :: forall (m :: Type -> Type) a. l m a -> (l :+: r) m a Source # Member t (l1 :+: (l2 :+: r)) => Member t ((l1 :+: l2) :+: r) Source # Left-recursion: if t is a member of l1 :+: l2 :+: r, then we can inject it into (l1 :+: l2) :+: r by injection into a right-recursive signature, followed by left-association. Instance detailsDefined in Control.Effect.Sum Methodsinj :: forall (m :: Type -> Type) a. t m a -> ((l1 :+: l2) :+: r) m a Source # Algebra (Error e) (Either e) Source # Instance detailsDefined in Control.Algebra Methodsalg :: Error e (Either e) a -> Either e a Source # Generic1 ((f :+: g) m :: Type -> Type) Source # Instance detailsDefined in Control.Effect.Sum Associated Typestype Rep1 ((f :+: g) m) :: k -> Type # Methodsfrom1 :: forall (a :: k). (f :+: g) m a -> Rep1 ((f :+: g) m) a #to1 :: forall (a :: k). Rep1 ((f :+: g) m) a -> (f :+: g) m a # (Effect f, Effect g) => Effect (f :+: g) Source # Instance detailsDefined in Control.Effect.Sum Methodsthread :: (Functor ctx, Monad m) => ctx () -> (forall x. ctx (m x) -> n (ctx x)) -> (f :+: g) m a -> (f :+: g) n (ctx a) Source # (HFunctor f, HFunctor g) => HFunctor (f :+: g) Source # Instance detailsDefined in Control.Effect.Sum Methodshmap :: Functor m => (forall x. m x -> n x) -> (f :+: g) m a -> (f :+: g) n a Source # (Algebra sig m, Effect sig) => Algebra (Choose :+: sig) (ChooseC m) Source # Instance detailsDefined in Control.Carrier.Choose.Church Methodsalg :: (Choose :+: sig) (ChooseC m) a -> ChooseC m a Source # (Algebra sig m, Effect sig) => Algebra (Empty :+: sig) (EmptyC m) Source # Instance detailsDefined in Control.Carrier.Empty.Maybe Methodsalg :: (Empty :+: sig) (EmptyC m) a -> EmptyC m a Source # (Algebra sig m, Effect sig) => Algebra (NonDet :+: sig) (NonDetC m) Source # Instance detailsDefined in Control.Carrier.NonDet.Church Methodsalg :: (NonDet :+: sig) (NonDetC m) a -> NonDetC m a Source # (MonadIO m, Algebra sig m) => Algebra (Trace :+: sig) (TraceC m) Source # Instance detailsDefined in Control.Carrier.Trace.Printing Methodsalg :: (Trace :+: sig) (TraceC m) a -> TraceC m a Source # Algebra sig m => Algebra (Trace :+: sig) (TraceC m) Source # Instance detailsDefined in Control.Carrier.Trace.Ignoring Methodsalg :: (Trace :+: sig) (TraceC m) a -> TraceC m a Source # (Algebra sig m, Effect sig) => Algebra (Trace :+: sig) (TraceC m) Source # Instance detailsDefined in Control.Carrier.Trace.Returning Methodsalg :: (Trace :+: sig) (TraceC m) a -> TraceC m a Source # (Algebra sig m, Effect sig) => Algebra (Fail :+: sig) (FailC m) Source # Instance detailsDefined in Control.Carrier.Fail.Either Methodsalg :: (Fail :+: sig) (FailC m) a -> FailC m a Source # (Algebra sig m, Effect sig) => Algebra (Fresh :+: sig) (FreshC m) Source # Instance detailsDefined in Control.Carrier.Fresh.Strict Methodsalg :: (Fresh :+: sig) (FreshC m) a -> FreshC m a Source # (Algebra sig m, Effect sig) => Algebra (Cut :+: (NonDet :+: sig)) (CutC m) Source # Instance detailsDefined in Control.Carrier.Cut.Church Methodsalg :: (Cut :+: (NonDet :+: sig)) (CutC m) a -> CutC m a Source # (Algebra sig m, Effect sig) => Algebra (Cull :+: (NonDet :+: sig)) (CullC m) Source # Instance detailsDefined in Control.Carrier.Cull.Church Methodsalg :: (Cull :+: (NonDet :+: sig)) (CullC m) a -> CullC m a Source # Algebra sig m => Algebra (Reader r :+: sig) (ReaderT r m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (Reader r :+: sig) (ReaderT r m) a -> ReaderT r m a Source # Algebra sig m => Algebra (Reader r :+: sig) (ReaderC r m) Source # Instance detailsDefined in Control.Carrier.Reader Methodsalg :: (Reader r :+: sig) (ReaderC r m) a -> ReaderC r m a Source # (Algebra sig m, Effect sig) => Algebra (State s :+: sig) (StateT s m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (State s :+: sig) (StateT s m) a -> StateT s m a Source # (Algebra sig m, Effect sig) => Algebra (State s :+: sig) (StateT s m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (State s :+: sig) (StateT s m) a -> StateT s m a Source # (Algebra sig m, Effect sig) => Algebra (State s :+: sig) (StateC s m) Source # Instance detailsDefined in Control.Carrier.State.Strict Methodsalg :: (State s :+: sig) (StateC s m) a -> StateC s m a Source # (Algebra sig m, Effect sig) => Algebra (State s :+: sig) (StateC s m) Source # Instance detailsDefined in Control.Carrier.State.Lazy Methodsalg :: (State s :+: sig) (StateC s m) a -> StateC s m a Source # (Algebra sig m, Effect sig) => Algebra (Throw e :+: sig) (ThrowC e m) Source # Instance detailsDefined in Control.Carrier.Throw.Either Methodsalg :: (Throw e :+: sig) (ThrowC e m) a -> ThrowC e m a Source # (Algebra sig m, Effect sig) => Algebra (Error e :+: sig) (ExceptT e m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (Error e :+: sig) (ExceptT e m) a -> ExceptT e m a Source # (Algebra sig m, Effect sig) => Algebra (Error e :+: sig) (ErrorC e m) Source # Instance detailsDefined in Control.Carrier.Error.Either Methodsalg :: (Error e :+: sig) (ErrorC e m) a -> ErrorC e m a Source # (Algebra sig m, Effect sig, Monoid w) => Algebra (Writer w :+: sig) (WriterT w m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (Writer w :+: sig) (WriterT w m) a -> WriterT w m a Source # (Algebra sig m, Effect sig, Monoid w) => Algebra (Writer w :+: sig) (WriterT w m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (Writer w :+: sig) (WriterT w m) a -> WriterT w m a Source # (Monoid w, Algebra sig m, Effect sig) => Algebra (Writer w :+: sig) (WriterC w m) Source # Instance detailsDefined in Control.Carrier.Writer.Strict Methodsalg :: (Writer w :+: sig) (WriterC w m) a -> WriterC w m a Source # (HFunctor eff, HFunctor sig, Reifies s (Handler eff m), Monad m, Algebra sig m) => Algebra (eff :+: sig) (InterpretC s eff m) Source # Instance detailsDefined in Control.Carrier.Interpret Methodsalg :: (eff :+: sig) (InterpretC s eff m) a -> InterpretC s eff m a Source # (LabelledMember label sub sig, HFunctor sub, Algebra sig m) => Algebra (sub :+: sig) (UnderLabel label sub m) Source # Instance detailsDefined in Control.Effect.Labelled Methodsalg :: (sub :+: sig) (UnderLabel label sub m) a -> UnderLabel label sub m a Source # (Algebra sig m, Effect sig, Monoid w) => Algebra (Reader r :+: (Writer w :+: (State s :+: sig))) (RWST r w s m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (Reader r :+: (Writer w :+: (State s :+: sig))) (RWST r w s m) a -> RWST r w s m a Source # (Algebra sig m, Effect sig, Monoid w) => Algebra (Reader r :+: (Writer w :+: (State s :+: sig))) (RWST r w s m) Source # Instance detailsDefined in Control.Algebra Methodsalg :: (Reader r :+: (Writer w :+: (State s :+: sig))) (RWST r w s m) a -> RWST r w s m a Source # (Algebra (eff :+: sig) (sub m), HFunctor eff, HFunctor sig) => Algebra (Labelled label eff :+: sig) (Labelled label sub m) Source # Instance detailsDefined in Control.Effect.Labelled Methodsalg :: (Labelled label eff :+: sig) (Labelled label sub m) a -> Labelled label sub m a Source # (Functor (f m), Functor (g m)) => Functor ((f :+: g) m) Source # Instance detailsDefined in Control.Effect.Sum Methodsfmap :: (a -> b) -> (f :+: g) m a -> (f :+: g) m b #(<\$) :: a -> (f :+: g) m b -> (f :+: g) m a # (Foldable (f m), Foldable (g m)) => Foldable ((f :+: g) m) Source # Instance detailsDefined in Control.Effect.Sum Methodsfold :: Monoid m0 => (f :+: g) m m0 -> m0 #foldMap :: Monoid m0 => (a -> m0) -> (f :+: g) m a -> m0 #foldMap' :: Monoid m0 => (a -> m0) -> (f :+: g) m a -> m0 #foldr :: (a -> b -> b) -> b -> (f :+: g) m a -> b #foldr' :: (a -> b -> b) -> b -> (f :+: g) m a -> b #foldl :: (b -> a -> b) -> b -> (f :+: g) m a -> b #foldl' :: (b -> a -> b) -> b -> (f :+: g) m a -> b #foldr1 :: (a -> a -> a) -> (f :+: g) m a -> a #foldl1 :: (a -> a -> a) -> (f :+: g) m a -> a #toList :: (f :+: g) m a -> [a] #null :: (f :+: g) m a -> Bool #length :: (f :+: g) m a -> Int #elem :: Eq a => a -> (f :+: g) m a -> Bool #maximum :: Ord a => (f :+: g) m a -> a #minimum :: Ord a => (f :+: g) m a -> a #sum :: Num a => (f :+: g) m a -> a #product :: Num a => (f :+: g) m a -> a # (Traversable (f m), Traversable (g m)) => Traversable ((f :+: g) m) Source # Instance detailsDefined in Control.Effect.Sum Methodstraverse :: Applicative f0 => (a -> f0 b) -> (f :+: g) m a -> f0 ((f :+: g) m b) #sequenceA :: Applicative f0 => (f :+: g) m (f0 a) -> f0 ((f :+: g) m a) #mapM :: Monad m0 => (a -> m0 b) -> (f :+: g) m a -> m0 ((f :+: g) m b) #sequence :: Monad m0 => (f :+: g) m (m0 a) -> m0 ((f :+: g) m a) # (Eq (f m k), Eq (g m k)) => Eq ((f :+: g) m k) Source # Instance detailsDefined in Control.Effect.Sum Methods(==) :: (f :+: g) m k -> (f :+: g) m k -> Bool #(/=) :: (f :+: g) m k -> (f :+: g) m k -> Bool # (Ord (f m k), Ord (g m k)) => Ord ((f :+: g) m k) Source # Instance detailsDefined in Control.Effect.Sum Methodscompare :: (f :+: g) m k -> (f :+: g) m k -> Ordering #(<) :: (f :+: g) m k -> (f :+: g) m k -> Bool #(<=) :: (f :+: g) m k -> (f :+: g) m k -> Bool #(>) :: (f :+: g) m k -> (f :+: g) m k -> Bool #(>=) :: (f :+: g) m k -> (f :+: g) m k -> Bool #max :: (f :+: g) m k -> (f :+: g) m k -> (f :+: g) m k #min :: (f :+: g) m k -> (f :+: g) m k -> (f :+: g) m k # (Show (f m k), Show (g m k)) => Show ((f :+: g) m k) Source # Instance detailsDefined in Control.Effect.Sum MethodsshowsPrec :: Int -> (f :+: g) m k -> ShowS #show :: (f :+: g) m k -> String #showList :: [(f :+: g) m k] -> ShowS # type Rep1 ((f :+: g) m :: Type -> Type) Source # Instance detailsDefined in Control.Effect.Sum type Rep1 ((f :+: g) m :: Type -> Type) = D1 ('MetaData ":+:" "Control.Effect.Sum" "fused-effects-1.0.2.0-inplace" 'False) (C1 ('MetaCons "L" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 (f m))) :+: C1 ('MetaCons "R" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 (g m))))