sig
  type ('a, 'b) result = ('a, 'b) Result.result = Ok of '| Error of 'b
  val ( >>= ) :
    ('a, 'b) Result.result ->
    ('-> ('c, 'b) Result.result) -> ('c, 'b) Result.result
  val ( >>| ) :
    ('a, 'b) Result.result -> ('-> 'c) -> ('c, 'b) Result.result
  module R :
    sig
      type ('a, 'b) t = ('a, 'b) Result.result
      val ok : '-> ('a, 'b) Result.result
      val error : '-> ('a, 'b) Result.result
      val reword_error :
        ('-> 'c) -> ('a, 'b) Result.result -> ('a, 'c) Result.result
      val get_ok : ('a, 'b) Result.result -> 'a
      val get_error : ('a, 'b) Result.result -> 'b
      val pp :
        pp_ok:(Format.formatter -> '-> unit) ->
        pp_error:(Format.formatter -> '-> unit) ->
        Format.formatter -> ('a, 'b) Result.result -> unit
      val return : '-> ('a, 'b) Result.result
      val fail : '-> ('a, 'b) Result.result
      val bind :
        ('a, 'b) Result.result ->
        ('-> ('c, 'b) Result.result) -> ('c, 'b) Result.result
      val map :
        ('-> 'c) -> ('a, 'b) Result.result -> ('c, 'b) Result.result
      val join :
        (('a, 'b) Result.result, 'b) Result.result -> ('a, 'b) Result.result
      val ( >>= ) :
        ('a, 'b) Result.result ->
        ('-> ('c, 'b) Result.result) -> ('c, 'b) Result.result
      val ( >>| ) :
        ('a, 'b) Result.result -> ('-> 'c) -> ('c, 'b) Result.result
      module Infix :
        sig
          val ( >>= ) :
            ('a, 'b) Result.result ->
            ('-> ('c, 'b) Result.result) -> ('c, 'b) Result.result
          val ( >>| ) :
            ('a, 'b) Result.result -> ('-> 'c) -> ('c, 'b) Result.result
        end
      type msg = [ `Msg of string ]
      val msg : string -> [> Rresult.R.msg ]
      val msgf :
        ('a, Format.formatter, unit, [> Rresult.R.msg ]) Pervasives.format4 ->
        'a
      val pp_msg : Format.formatter -> Rresult.R.msg -> unit
      val error_msg : string -> ('a, [> Rresult.R.msg ]) Result.result
      val error_msgf :
        ('a, Format.formatter, unit, ('b, [> Rresult.R.msg ]) Result.result)
        Pervasives.format4 -> 'a
      val reword_error_msg :
        ?replace:bool ->
        (string -> Rresult.R.msg) ->
        ('a, Rresult.R.msg) Result.result ->
        ('a, [> Rresult.R.msg ]) Result.result
      val error_to_msg :
        pp_error:(Format.formatter -> '-> unit) ->
        ('a, 'b) Result.result -> ('a, [> Rresult.R.msg ]) Result.result
      val error_msg_to_invalid_arg : ('a, Rresult.R.msg) Result.result -> 'a
      val open_error_msg :
        ('a, Rresult.R.msg) Result.result ->
        ('a, [> Rresult.R.msg ]) Result.result
      type exn_trap = [ `Exn_trap of exn * Printexc.raw_backtrace ]
      val pp_exn_trap : Format.formatter -> Rresult.R.exn_trap -> unit
      val trap_exn :
        ('-> 'b) -> '-> ('b, [> Rresult.R.exn_trap ]) Result.result
      val error_exn_trap_to_msg :
        ('a, Rresult.R.exn_trap) Result.result ->
        ('a, [> Rresult.R.msg ]) Result.result
      val open_error_exn_trap :
        ('a, Rresult.R.exn_trap) Result.result ->
        ('a, [> Rresult.R.exn_trap ]) Result.result
      val is_ok : ('a, 'b) Result.result -> bool
      val is_error : ('a, 'b) Result.result -> bool
      val equal :
        ok:('-> '-> bool) ->
        error:('-> '-> bool) ->
        ('a, 'b) Result.result -> ('a, 'b) Result.result -> bool
      val compare :
        ok:('-> '-> int) ->
        error:('-> '-> int) ->
        ('a, 'b) Result.result -> ('a, 'b) Result.result -> int
      val to_option : ('a, 'b) Result.result -> 'a option
      val of_option :
        none:(unit -> ('a, 'b) Result.result) ->
        'a option -> ('a, 'b) Result.result
      val to_presult :
        ('a, 'b) Result.result -> [> `Error of '| `Ok of 'a ]
      val of_presult :
        [< `Error of '| `Ok of 'a ] -> ('a, 'b) Result.result
      val ignore_error : use:'-> ('a, 'b) Result.result -> 'a
      val kignore_error :
        use:('a, 'c) Result.result ->
        ('a, 'b) Result.result -> ('a, 'c) Result.result
    end
end