Make.Monad
All API requests are bound through this monad which encapsulates an Lwt cooperative thread and includes some state which may be set via API
functions.
val return : 'a -> 'a t
return x
is the value x
wrapped in a state-sensitive Lwt thread.
bind m f
is the eventual value of f
applied to the contents of m
. Its argument order is designed for currying.
map f m
is bind
m (fun x -> return (f x))
. Its argument order is designed for currying.
val (>>~) : 'a Response.t t -> ('a -> 'b t) -> 'b t
m >>~ f
is m >|= {!Response.value} >>= f
.
catch try with
is the result of trying try
. If try
succeeds, its result is returned. If try
raises an exception, with
is applied to the exception and the result of with
is returned.
val fail : exn -> 'a t
fail exn
raises exception exn
inside of the monad.
val run : 'a t -> 'a Lwt.t
run m
is the Lwt thread corresponding to the sequence of API actions represented by m
. Once a t
has been run
, any GitHub API state such as associated default security tokens or declared user agent string will not be available in subsequently bound functions.
val embed : 'a Lwt.t -> 'a t
embed lwt
is an Lwt thread lifted into the GitHub API monad. Its monadic state will be inherited from any monadic values bound before it.