type ('a, 'b) t =
| Left of 'a |
| Right of 'b |
val return : 'a -> ('b, 'a) t
val return_left : 'a -> ('a, 'b) t
val bind : ('a, 'b) t -> ('b -> ('a, 'c) t) -> ('a, 'c) t
val bind_left : ('a, 'b) t -> ('a -> ('c, 'b) t) -> ('c, 'b) t
val (>>=) : ('a, 'b) t -> ('b -> ('a, 'c) t) -> ('a, 'c) t
val of_option : left:'a -> 'b option -> ('a, 'b) t