data-effects-0.1.2.0: A basic framework for effect systems based on effects represented by GADTs.
Copyright(c) 2023 Yamada Ryo
LicenseMPL-2.0 (see the file LICENSE)
Maintainerymdfield@outlook.jp
Stabilityexperimental
Portabilityportable
Safe HaskellSafe-Inferred
LanguageGHC2021

Data.Effect.Provider.Implicit

Description

 

Documentation

data ImplicitProvider' c i e (f :: Type -> Type) (a :: Type) where Source #

Constructors

WithImplicit :: i -> (forall g. (c g, e g) => (forall x. f x -> g x) -> g a) -> ImplicitProvider' c i e f a 

Instances

Instances details
() => HFunctor (ImplicitProvider' c i e) Source # 
Instance details

Defined in Data.Effect.Provider.Implicit

Methods

hfmap :: forall (f :: Type -> Type) (g :: Type -> Type). (f :-> g) -> ImplicitProvider' c i e f :-> ImplicitProvider' c i e g #

withImplicit :: forall (i :: Type) (c :: (Type -> Type) -> Constraint) (e :: (Type -> Type) -> Constraint) (a :: Type) f. SendSigBy ImplicitProviderKey (ImplicitProvider' c i e) f => i -> (forall (g :: Type -> Type). (c g, e g) => (forall (x :: Type). f x -> g x) -> g a) -> f a Source #

withImplicit'' :: forall key (i :: Type) (c :: (Type -> Type) -> Constraint) (e :: (Type -> Type) -> Constraint) (a :: Type) f. SendSigBy key (ImplicitProvider' c i e) f => i -> (forall (g :: Type -> Type). (c g, e g) => (forall (x :: Type). f x -> g x) -> g a) -> f a Source #

withImplicit' :: forall tag (i :: Type) (c :: (Type -> Type) -> Constraint) (e :: (Type -> Type) -> Constraint) (a :: Type) f. SendSig (TagH (ImplicitProvider' c i e) tag) f => i -> (forall (g :: Type -> Type). (c g, e g) => (forall (x :: Type). f x -> g x) -> g a) -> f a Source #

withImplicit'_ :: forall (i :: Type) (c :: (Type -> Type) -> Constraint) (e :: (Type -> Type) -> Constraint) (a :: Type) f. SendSig (ImplicitProvider' c i e) f => i -> (forall (g :: Type -> Type). (c g, e g) => (forall (x :: Type). f x -> g x) -> g a) -> f a Source #

(.!) :: forall c e i f a. SendSigBy ImplicitProviderKey (ImplicitProvider' c i e) f => i -> (forall g. (c g, e g) => g a) -> f a Source #

(..!) :: forall c e i f a. SendSigBy ImplicitProviderKey (ImplicitProvider' c i e) f => i -> (forall g. (c g, e g) => (f ~> g) -> g a) -> f a Source #