Multi.Makeinclude Trans.S
with type 'a t := 'a T1(T)(M).t
with type 'a m := 'a T1(T)(M).m
with type 'a e := 'a T1(T)(M).eval global : idthe identifier of the global (initial) state.
val fork : unit -> unit T1(T)(M).tfork () forks the current state.
val switch : id -> unit T1(T)(M).tswitch id switches to the state with the given id if such state is alive, otherwise switches to the closest alive ancestor of the state with the given id
val parent : unit -> id T1(T)(M).tparent () returns an identifier of the closest alive parent.
val ancestor : id list -> id T1(T)(M).tancestor ids returns an identifier of the closest common ancestor of states with the given identifiers.
val current : unit -> id T1(T)(M).tcurrent id returns an identifier of current state.
val kill : id -> unit T1(T)(M).tkill id kills a state with the specified id. If id corresponds to the current state, then switches to the closest ancestor. If id = global then do nothing.
val forks : unit -> id Core_kernel.Sequence.t T1(T)(M).tforks xs returns a sequence of all alive states
val status : id -> status T1(T)(M).tstatus id returns a status of a state with the given id
include S
with type 'a t := 'a T1(T)(M).t
and type 'a e := 'a T1(T)(M).e
and type 'a m := 'a T1(T)(M).m
with type env := T.tinclude Trans.S
with type 'a t := 'a T1(T)(M).t
with type 'a e := 'a T1(T)(M).e
with type 'a m := 'a T1(T)(M).mval lift : 'a T1(T)(M).m -> 'a T1(T)(M).tlifts inner monad into the resulting monad
val run : 'a T1(T)(M).t -> 'a T1(T)(M).eruns the computation
include Monad with type 'a t := 'a T1(T)(M).tval void : 'a T1(T)(M).t -> unit T1(T)(M).tvoid m computes m and discrards the result.
val sequence : unit T1(T)(M).t list -> unit T1(T)(M).tsequence xs computes a sequence of computations xs in the left to right order.
val forever : 'a T1(T)(M).t -> 'b T1(T)(M).tforever xs creates a computationt that never returns.
module Fn : sig ... endVarious function combinators lifted into the Kleisli category.
module Pair : sig ... endThe pair interface lifted into the monad.
module Triple : sig ... endThe triple interface lifted into a monad.
module Lift : sig ... endLifts functions into the monad.
module Exn : sig ... endInteracting between monads and language exceptions
module Collection : sig ... endLifts collection interface into the monad.
module List : Collection.S with type 'a t := 'a listThe Monad.Collection.S interface for lists
module Seq : Collection.S with type 'a t := 'a Core_kernel.Sequence.tThe Monad.Collection.S interface for sequences
include Syntax.S with type 'a t := 'a T1(T)(M).tval (>=>) :
('a -> 'b T1(T)(M).t) ->
('b -> 'c T1(T)(M).t) ->
'a ->
'c T1(T)(M).tf >=> g is fun x -> f x >>= g
val (!!) : 'a -> 'a T1(T)(M).t!!x is return x
val (!$) : ('a -> 'b) -> 'a T1(T)(M).t -> 'b T1(T)(M).t!$f is Lift.unary f
val (!$$) : ('a -> 'b -> 'c) -> 'a T1(T)(M).t -> 'b T1(T)(M).t -> 'c T1(T)(M).t!$$f is Lift.binary f
val (!$$$) :
('a -> 'b -> 'c -> 'd) ->
'a T1(T)(M).t ->
'b T1(T)(M).t ->
'c T1(T)(M).t ->
'd T1(T)(M).t!$$$f is Lift.ternary f
val (!$$$$) :
('a -> 'b -> 'c -> 'd -> 'e) ->
'a T1(T)(M).t ->
'b T1(T)(M).t ->
'c T1(T)(M).t ->
'd T1(T)(M).t ->
'e T1(T)(M).t!$$$$f is Lift.quaternary f
val (!$$$$$) :
('a -> 'b -> 'c -> 'd -> 'e -> 'f) ->
'a T1(T)(M).t ->
'b T1(T)(M).t ->
'c T1(T)(M).t ->
'd T1(T)(M).t ->
'e T1(T)(M).t ->
'f T1(T)(M).t!$$$$$f is Lift.quinary f
include Syntax.Let.S with type 'a t := 'a T1(T)(M).tval let* : 'a T1(T)(M).t -> ('a -> 'b T1(T)(M).t) -> 'b T1(T)(M).tlet* r = f x in b is f x >>= fun r -> b
val and* : 'a T1(T)(M).t -> 'b T1(T)(M).t -> ('a * 'b) T1(T)(M).tmonoidal product
val let+ : 'a T1(T)(M).t -> ('a -> 'b) -> 'b T1(T)(M).tlet+ r = f x in b is f x >>| fun r -> b
val and+ : 'a T1(T)(M).t -> 'b T1(T)(M).t -> ('a * 'b) T1(T)(M).tmonoidal product
include Core_kernel.Monad.S with type 'a t := 'a T1(T)(M).tval (>>=) : 'a T1(T)(M).t -> ('a -> 'b T1(T)(M).t) -> 'b T1(T)(M).tval (>>|) : 'a T1(T)(M).t -> ('a -> 'b) -> 'b T1(T)(M).tmodule Monad_infix : sig ... endval bind : 'a T1(T)(M).t -> f:('a -> 'b T1(T)(M).t) -> 'b T1(T)(M).tval return : 'a -> 'a T1(T)(M).tval map : 'a T1(T)(M).t -> f:('a -> 'b) -> 'b T1(T)(M).tval join : 'a T1(T)(M).t T1(T)(M).t -> 'a T1(T)(M).tval ignore_m : 'a T1(T)(M).t -> unit T1(T)(M).tval all : 'a T1(T)(M).t list -> 'a list T1(T)(M).tval all_unit : unit T1(T)(M).t list -> unit T1(T)(M).tmodule Let_syntax : sig ... endmodule Let : Syntax.Let.S with type 'a t := 'a T1(T)(M).tMonadic operators, see Monad.Syntax.S for more.
module Syntax : Syntax.S with type 'a t := 'a T1(T)(M).tMonadic operators, see Monad.Syntax.S for more.
val put : T.t -> unit T1(T)(M).tput s changes the current state to s
val get : unit -> T.t T1(T)(M).tget s gets the current state
val gets : (T.t -> 'r) -> 'r T1(T)(M).tgets p projects the current state with the function p
val update : (T.t -> T.t) -> unit T1(T)(M).tupdate f updates the current state with the function f