sig
type ('left, 'right) t
val bind :
('left, 'right) Exception.t ->
('right -> ('left, 'new_right) Exception.t) ->
('left, 'new_right) Exception.t
val return : 'right -> ('left, 'right) Exception.t
val throw : 'left -> ('left, 'right) Exception.t
val catch :
('left, 'right) Exception.t ->
('left -> ('new_left, 'right) Exception.t) ->
('new_left, 'right) Exception.t
val run :
('left -> 'a) -> ('right -> 'a) -> ('left, 'right) Exception.t -> 'a
end