sig
type ('t0, 't1, 'a) t
val return : 'm -> ('t0, 't0, 'm) Session.Monadic.t
val ( >>= ) :
('t0, 't1, 'a) Session.Monadic.t ->
('a -> ('t1, 't2, 'b) Session.Monadic.t) ->
('t0, 't2, 'b) Session.Monadic.t
val ( >>> ) :
('t0, 't1, 'a) Session.Monadic.t ->
('t1, 't2, 'b) Session.Monadic.t -> ('t0, 't2, 'b) Session.Monadic.t
val fix :
(('t0, 't1, 'a) Session.Monadic.t -> ('t0, 't1, 'a) Session.Monadic.t) ->
('t0, 't1, 'a) Session.Monadic.t
val connect :
(('a, 'b) Session.st, Session.et, unit) Session.Monadic.t ->
(('b, 'a) Session.st, Session.et, 'm) Session.Monadic.t -> 'm
val receive :
(('m * ('a, 'b) Session.st) Session.it, ('a, 'b) Session.st, 'm)
Session.Monadic.t
val send :
'm ->
(('m * ('b, 'a) Session.st) Session.ot, ('a, 'b) Session.st, unit)
Session.Monadic.t
val branch :
('t0, 't2, 'a) Session.Monadic.t ->
('t1, 't2, 'a) Session.Monadic.t ->
(('t0, 't1) Session.choice Session.it, 't2, 'a) Session.Monadic.t
val select_true :
((('b, 'a) Session.st, ('d, 'c) Session.st) Session.choice Session.ot,
('a, 'b) Session.st, unit)
Session.Monadic.t
val select_false :
((('b, 'a) Session.st, ('d, 'c) Session.st) Session.choice Session.ot,
('c, 'd) Session.st, unit)
Session.Monadic.t
end