simple-effects-0.13.0.0: A simple effect system that integrates with MTL

Safe HaskellSafe
LanguageHaskell2010

Control.Effects.Generic

Documentation

class (Generic (a m), Generic (a (t m)), SimpleMethodsRep (Rep (a m)) (Rep (a (t m))) m t) => SimpleMethods a (m :: * -> *) (t :: (* -> *) -> * -> *) where Source #

Methods

liftSimple :: a m -> a (t m) Source #

Instances
(Generic (a m), Generic (a (t m)), SimpleMethodsRep (Rep (a m)) (Rep (a (t m))) m t) => SimpleMethods a m t Source # 
Instance details

Defined in Control.Effects.Generic

Methods

liftSimple :: a m -> a (t m) Source #

class SimpleMethodsRep r r' (m :: * -> *) (t :: (* -> *) -> * -> *) where Source #

Methods

liftSimpleRep :: r x -> r' x Source #

Instances
SimpleMethodsRep (V1 :: Type -> Type) (V1 :: Type -> Type) m t Source # 
Instance details

Defined in Control.Effects.Generic

Methods

liftSimpleRep :: V1 x -> V1 x Source #

SimpleMethodsRep (U1 :: Type -> Type) (U1 :: Type -> Type) m t Source # 
Instance details

Defined in Control.Effects.Generic

Methods

liftSimpleRep :: U1 x -> U1 x Source #

SimpleMethod a a' m t => SimpleMethodsRep (K1 x a :: Type -> Type) (K1 x a' :: Type -> Type) m t Source # 
Instance details

Defined in Control.Effects.Generic

Methods

liftSimpleRep :: K1 x a x0 -> K1 x a' x0 Source #

(SimpleMethodsRep a a' m t, SimpleMethodsRep b b' m t) => SimpleMethodsRep (a :+: b) (a' :+: b') m t Source # 
Instance details

Defined in Control.Effects.Generic

Methods

liftSimpleRep :: (a :+: b) x -> (a' :+: b') x Source #

(SimpleMethodsRep a a' m t, SimpleMethodsRep b b' m t) => SimpleMethodsRep (a :*: b) (a' :*: b') m t Source # 
Instance details

Defined in Control.Effects.Generic

Methods

liftSimpleRep :: (a :*: b) x -> (a' :*: b') x Source #

SimpleMethodsRep c c' m t => SimpleMethodsRep (M1 a b c) (M1 a b c') m t Source # 
Instance details

Defined in Control.Effects.Generic

Methods

liftSimpleRep :: M1 a b c x -> M1 a b c' x Source #

class SimpleMethod f ft (m :: * -> *) (t :: (* -> *) -> * -> *) where Source #

Methods

liftMethod :: f -> ft Source #

Instances
ForceError (TypeError (Text "The result of all methods must be monadic." :$$: ((((Text "One of the methods' result is of type `" :<>: ShowType a) :<>: Text "`. Maybe try `") :<>: ShowType (m a)) :<>: Text "` instead.")) :: Type) => SimpleMethod a b m t Source # 
Instance details

Defined in Control.Effects.Generic

Methods

liftMethod :: a -> b Source #

(MonadTrans t, Monad m) => SimpleMethod (m a) (t m a) m t Source # 
Instance details

Defined in Control.Effects.Generic

Methods

liftMethod :: m a -> t m a Source #

ForceError (TypeError (Text "Parameters of methods can't depend on the monadic context." :$$: ((((Text "The parameter `" :<>: ShowType a) :<>: Text "` depends on `") :<>: ShowType m) :<>: Text "`")) :: Type) => SimpleMethod (a -> f) (a' -> ft) m t Source # 
Instance details

Defined in Control.Effects.Generic

Methods

liftMethod :: (a -> f) -> a' -> ft Source #

SimpleMethod f ft m t => SimpleMethod (a -> f) (a -> ft) m t Source # 
Instance details

Defined in Control.Effects.Generic

Methods

liftMethod :: (a -> f) -> a -> ft Source #

genericLiftThrough :: forall t e m. (MonadTrans t, Monad m, Monad (t m), SimpleMethods e m t) => e m -> e (t m) Source #

class (Generic (a m), MonadicMethodsRep (Rep (a m)) m, Monad m) => MonadicMethods a m where Source #

Methods

mergeMonadicMethods :: m (a m) -> a m Source #

Instances
(Generic (a m), MonadicMethodsRep (Rep (a m)) m, Monad m) => MonadicMethods a m Source # 
Instance details

Defined in Control.Effects.Generic

Methods

mergeMonadicMethods :: m (a m) -> a m Source #

class MonadicMethodsRep r m where Source #

Methods

mergeMonadicMethodsRep :: m (r x) -> r x Source #

Instances
ForceError (TypeError (Text "Can't automatically derive Effect instance for an effect with no constructors.") :: Type) => MonadicMethodsRep (V1 :: Type -> Type) m Source # 
Instance details

Defined in Control.Effects.Generic

Methods

mergeMonadicMethodsRep :: m (V1 x) -> V1 x Source #

MonadicMethodsRep (U1 :: Type -> Type) m Source # 
Instance details

Defined in Control.Effects.Generic

Methods

mergeMonadicMethodsRep :: m (U1 x) -> U1 x Source #

(MonadicMethod a m, Functor m) => MonadicMethodsRep (K1 x a :: Type -> Type) m Source # 
Instance details

Defined in Control.Effects.Generic

Methods

mergeMonadicMethodsRep :: m (K1 x a x0) -> K1 x a x0 Source #

ForceError (TypeError (Text "Can't automatically derive Effect instance for an effect with multiple constructors.") :: Type) => MonadicMethodsRep (a :+: b) m Source # 
Instance details

Defined in Control.Effects.Generic

Methods

mergeMonadicMethodsRep :: m ((a :+: b) x) -> (a :+: b) x Source #

(MonadicMethodsRep a m, MonadicMethodsRep b m, Functor m) => MonadicMethodsRep (a :*: b) m Source # 
Instance details

Defined in Control.Effects.Generic

Methods

mergeMonadicMethodsRep :: m ((a :*: b) x) -> (a :*: b) x Source #

(MonadicMethodsRep c m, Functor m) => MonadicMethodsRep (M1 a b c) m Source # 
Instance details

Defined in Control.Effects.Generic

Methods

mergeMonadicMethodsRep :: m (M1 a b c x) -> M1 a b c x Source #

class MonadicMethod a m where Source #

Methods

mergeMonadicMethod :: m a -> a Source #

Instances
ForceError (TypeError (Text "The result of all methods must be monadic." :$$: ((((Text "One of the methods' result is of type `" :<>: ShowType a) :<>: Text "`. Maybe try `") :<>: ShowType (m a)) :<>: Text "` instead.")) :: Type) => MonadicMethod a m Source # 
Instance details

Defined in Control.Effects.Generic

Methods

mergeMonadicMethod :: m a -> a Source #

Monad m => MonadicMethod (m a) m Source # 
Instance details

Defined in Control.Effects.Generic

Methods

mergeMonadicMethod :: m (m a) -> m a Source #

(MonadicMethod b m, Functor m) => MonadicMethod (a -> b) m Source # 
Instance details

Defined in Control.Effects.Generic

Methods

mergeMonadicMethod :: m (a -> b) -> a -> b Source #

genericMergeContext :: MonadicMethods a m => m (a m) -> a m Source #

class ForceError (x :: *) Source #