Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Documentation
((~) * b (m x), Monad m) => MonadicMethod * a b (M * x) m Source # | |
(MonadTrans t, Monad m, (~) * a (m x)) => SimpleMethod * a (M * x) m t Source # | |
TypeError Constraint ((:<>:) ((:<>:) (Text "Parameters of methods can't depend on the monadic context (") (ShowType (* -> *) m)) (Text ")")) => IndependentOfM (k -> *) (M k) m Source # | |
type LiftedMethod * a (M * x) m t Source # | |
class (Generic (a m), Generic (a (t m)), Generic (a M)) => SimpleMethods a m t where Source #
liftSimple :: a m -> a (t m) Source #
((~) (* -> *) (Rep (a m)) (D1 * m1 (C1 * m2 p)), (~) (* -> *) (Rep (a (M k))) (D1 * m1 (C1 * m2 pM)), (~) (* -> *) (Rep (a (t m))) (D1 * m1 (C1 * m2 (LiftedProducts (* -> *) (k -> *) ((k -> *) -> k -> *) p pM m t))), ProductOfSimpleMethods (* -> *) (k -> *) ((k -> *) -> k -> *) p pM m t, Generic (a m), Generic (a (t m)), Generic (a (M k))) => SimpleMethods k a m t Source # | |
class ProductOfSimpleMethods p pM m t where Source #
type LiftedProducts p pM m t :: * -> * Source #
liftProducts :: Proxy m -> Proxy t -> Proxy pM -> p x -> LiftedProducts p pM m t x Source #
(ProductOfSimpleMethods (k3 -> *) k2 k1 f1 f1M m t, ProductOfSimpleMethods (k3 -> *) k2 k1 f2 f2M m t) => ProductOfSimpleMethods (k3 -> *) k2 k1 ((:*:) * f1 f2) ((:*:) k3 f1M f2M) m t Source # | |
SimpleMethod * f fM m t => ProductOfSimpleMethods (k -> *) (* -> *) ((* -> *) -> * -> *) (S1 * m1 (Rec0 * f)) (S1 k m1 (Rec0 k fM)) m t Source # | |
class (MonadTrans t, Monad m) => SimpleMethod f fM (m :: * -> *) (t :: (* -> *) -> * -> *) where Source #
type LiftedMethod f fM m t Source #
liftMethod :: Proxy m -> Proxy t -> Proxy fM -> f -> LiftedMethod f fM m t Source #
(TypeError Constraint (Text "Effect methods must be monadic actions or functions resulting in monadic actions"), Monad m, MonadTrans t) => SimpleMethod k a b m t Source # | |
((~) * f (a -> b), SimpleMethod * b bM m t, IndependentOfM * a m) => SimpleMethod * f (a -> bM) m t Source # | |
(MonadTrans t, Monad m, (~) * a (m x)) => SimpleMethod * a (M * x) m t Source # | |
class IndependentOfM (a :: k) (m :: * -> *) Source #
IndependentOfM k a m Source # | |
(IndependentOfM (k1 -> k2) a m, IndependentOfM k1 b m) => IndependentOfM k2 (a b) m Source # | |
TypeError Constraint ((:<>:) ((:<>:) (Text "Parameters of methods can't depend on the monadic context (") (ShowType (* -> *) m)) (Text ")")) => IndependentOfM (k -> *) (M k) m Source # | |
genericLiftThrough :: forall t e em m. (MonadTrans t, Monad m, Monad (t m), SimpleMethods (em e) m t) => em e m -> em e (t m) Source #
class MonadicMethods a m where Source #
mergeMonadicMethods :: m (a m) -> a m Source #
class ProductOfMonadicMethods p pM a m where Source #
mergeMonadicProducts :: Proxy p -> Proxy pM -> m (a m) -> (a m -> p x) -> p x Source #
(ProductOfMonadicMethods k2 (k1 -> *) f1 f1M a m, ProductOfMonadicMethods k2 (k1 -> *) f2 f2M a m) => ProductOfMonadicMethods k2 (k1 -> *) ((:*:) k2 f1 f2) ((:*:) k1 f1M f2M) a m Source # | |
MonadicMethod * a f fM m => ProductOfMonadicMethods k1 (k2 -> *) (S1 k1 m1 (Rec0 k1 f)) (S1 k2 m1 (Rec0 k2 fM)) a m Source # | |
class Monad m => MonadicMethod a f fM m where Source #
mergeMethod :: Proxy fM -> (a m -> f) -> m (a m) -> f Source #
(TypeError Constraint (Text "Effect methods must be monadic actions or functions resulting in monadic actions"), Monad m) => MonadicMethod k a f fM m Source # | |
((~) * f (b -> c), Monad m, MonadicMethod * a c cM m) => MonadicMethod * a f (bM -> cM) m Source # | |
((~) * b (m x), Monad m) => MonadicMethod * a b (M * x) m Source # | |
genericMergeContext :: MonadicMethods a m => m (a m) -> a m Source #