package mechaml

  1. Overview
  2. Docs
type 'a m = t -> (t * 'a) Lwt.t
val bind : 'a m -> ('a -> 'b m) -> 'b m
val return : 'a -> 'a m
val return_from_lwt : 'a Lwt.t -> 'a m
val map : ('a -> 'b) -> 'a m -> 'b m
val run : t -> 'a m -> t * 'a

Wrappers of Lwt's fail functions

val fail : exn -> 'a m
val fail_with : string -> 'a m

Wrappers of Lwt.catch and Lwt.try_bind inside this monad

val catch : (unit -> 'a m) -> (exn -> 'a m) -> 'a m
val try_bind : (unit -> 'a m) -> ('a -> 'b m) -> (exn -> 'b m) -> 'b m
module Infix : sig ... end

The Infix module defines operators for common bind operations

module Syntax : sig ... end

The Syntax module implements the monadic operators provided by OCaml 4.08

module List : sig ... end

The List module wraps the functions of the Lwt_list module inside the Agent monad. Functions suffixed with _s chain the actions sequentially, passing around the updated agent from an action to the next one. The functions suffixed with _m do everything in parallel, using a copy of the initial state in every thread and returning this same original state. The latter can be useful to retrieve a bunch of resources in batch where the updated state is not of interest (e.g download images)

Get the current state of the agent, or set a new one

val get : t m
val set : t -> unit m

Wrap the type of functions operating on the agent such as Agent.cookie_jar or Agent.set_cookie_jar to be usable inside the monad. For example, the first one go from Agent.t -> Cookiejar.t to Agent.t -> (Agent.t * Cookiejar.t) Lwt.t by just returning the agent unmodified together with the current cookie jar and wrap the result through Lwt.return

Note that the redefined functions have the same name as their counterpart, and thus will shadow or can be shadowed by them.

val save_content : string -> string -> unit m
val client_headers : Cohttp.Header.t m
val set_client_headers : Cohttp.Header.t -> unit m
val add_client_header : string -> string -> unit m
val remove_client_header : string -> unit m
val set_max_redirect : int -> unit m

Innovation. Community. Security.