sig
  type ('a, 'b) t = Ok of '| Error of 'b
  type ('a, 'b) sexpable = ('a, 'b) t
  val sexp_of_t :
    ('-> Sexplib.Sexp.t) ->
    ('-> Sexplib.Sexp.t) -> ('a, 'b) sexpable -> Sexplib.Sexp.t
  val t_of_sexp :
    (Sexplib.Sexp.t -> 'a) ->
    (Sexplib.Sexp.t -> 'b) -> Sexplib.Sexp.t -> ('a, 'b) sexpable
  val bind :
    ('a, 'b) Result.t -> ('-> ('c, 'b) Result.t) -> ('c, 'b) Result.t
  val return : '-> ('a, 'b) Result.t
  val is_ok : ('a, 'b) Result.t -> bool
  val is_error : ('a, 'b) Result.t -> bool
  val iter : f:('-> unit) -> ('a, 'b) Result.t -> unit
  val map : f:('-> 'b) -> ('a, 'c) Result.t -> ('b, 'c) Result.t
  val call : f:('-> unit, 'b) Result.t -> '-> unit
  val apply : f:('-> 'b, 'c) Result.t -> '-> ('b, 'c) Result.t
end