type 's scheduler = {
bind : 'a 'b. ('a, 's) io -> ('a -> ('b, 's) io) -> ('b, 's) io;
return : 'a. 'a -> ('a, 's) io;
}
type ('flow, 'error, 's) flow = {
recv : 'flow ->
Cstruct.t ->
(([ `End_of_flow | `Input of int ], 'error) Stdlib.result, 's) io;
send : 'flow -> Cstruct.t -> ((int, 'error) Stdlib.result, 's) io;
pp_error : Stdlib.Format.formatter -> 'error -> unit;
}
type ('uid, 'ref, 'v, 'g, 's) access = {
get : 'uid -> ('uid, 'v, 'g) store -> ('v option, 's) io;
parents : 'uid -> ('uid, 'v, 'g) store -> ('v list, 's) io;
deref : ('uid, 'v, 'g) store -> 'ref -> ('uid option, 's) io;
locals : ('uid, 'v, 'g) store -> ('ref list, 's) io;
shallowed : ('uid, 'v, 'g) store -> ('uid list, 's) io;
shallow : ('uid, 'v, 'g) store -> 'uid -> (unit, 's) io;
unshallow : ('uid, 'v, 'g) store -> 'uid -> (unit, 's) io;
}
module type SCHED = sig ... end
module type STORE = sig ... end
module type IO = sig ... end
module type UID = sig ... end
module type REF = sig ... end
module type FLOW = sig ... end