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