wire-api-0.1.0
Safe HaskellSafe-Inferred
LanguageGHC2021

Wire.API.Routes.ClientAlgebra

Synopsis

Documentation

class HasClient m api => HasClientAlgebra m api where Source #

The type of a Servant client is always an algebra over the underlying monad. Such an algebra structure can easily be constructed by induction over the structure of the API. The base case is an API consisting of only a response, in which case Client m api = m R, where R is the response type, and m R is always an algebra over m.

Minimal definition: joinClient | bindClient.

Minimal complete definition

Nothing

Methods

joinClient :: m (Client m api) -> Client m api Source #

bindClient :: m a -> (a -> Client m api) -> Client m api Source #

Instances

Instances details
(HasClientAlgebra m api, KnownSymbol sym) => HasClientAlgebra m (sym :> api) Source # 
Instance details

Defined in Wire.API.Routes.ClientAlgebra

Methods

joinClient :: m (Client m (sym :> api)) -> Client m (sym :> api) Source #

bindClient :: m a -> (a -> Client m (sym :> api)) -> Client m (sym :> api) Source #

(HasClientAlgebra m api, HasClient m (ReqBody' mods (ct ': cts) a :> api)) => HasClientAlgebra m (ReqBody' mods (ct ': cts) a :> api) Source # 
Instance details

Defined in Wire.API.Routes.ClientAlgebra

Methods

joinClient :: m (Client m (ReqBody' mods (ct ': cts) a :> api)) -> Client m (ReqBody' mods (ct ': cts) a :> api) Source #

bindClient :: m a0 -> (a0 -> Client m (ReqBody' mods (ct ': cts) a :> api)) -> Client m (ReqBody' mods (ct ': cts) a :> api) Source #

HasClient m (Verb method s cs a) => HasClientAlgebra m (Verb method s cs a) Source # 
Instance details

Defined in Wire.API.Routes.ClientAlgebra

Methods

joinClient :: m (Client m (Verb method s cs a)) -> Client m (Verb method s cs a) Source #

bindClient :: m a0 -> (a0 -> Client m (Verb method s cs a)) -> Client m (Verb method s cs a) Source #

(Monad m, AllMime cs, HasClient m (MultiVerb method cs as r)) => HasClientAlgebra m (MultiVerb method cs as r) Source # 
Instance details

Defined in Wire.API.Routes.ClientAlgebra

Methods

joinClient :: m (Client m (MultiVerb method cs as r)) -> Client m (MultiVerb method cs as r) Source #

bindClient :: m a -> (a -> Client m (MultiVerb method cs as r)) -> Client m (MultiVerb method cs as r) Source #