Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file monad_intf.ml
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253(*
* Copyright (c) 2019-2020 Craig Ferguson <me@craigfe.io>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*)moduletypeS=sigtype('a,'p)tvalreturn:'a->('a,'p)tvalmap:('a->'b)->('a,'p)t->('b,'p)tvalbind:('a->('b,'p)t)->('a,'p)t->('b,'p)tvalsequence:('a,'p)tlist->('alist,'p)tmoduleSyntax:sigval(let+):('a,'p)t->('a->'b)->('b,'p)tval(let*):('a,'p)t->('a->('b,'p)t)->('b,'p)tendendmoduletypeMonad=sigmoduletypeS=SmoduleReader:sig(** Computations that read values from a shared environment. *)includeS(** @inline *)valrun:('a,'e)t->'e->'a(** Runs a {!('a, 'e) t} and extracts the final value ['a] from it. *)valask:('e,'e)t(** Retrieves the monad environment. *)valasks:('e->'a)->('a,'e)t(** Retrieves a projection of the current monad environment. *)vallocal:('e->'e)->('a,'e)t->('a,'e)t(** [local f m] executes a computation in [m] in an environment modified by
[f]. *)endend