sig
  type ('a, 'b) t = ('a, 'b) BatPervasives.result = Ok of 'a | Bad of 'b
  val catch : ('a -> 'b) -> 'a -> ('b, exn) BatResult.t
  val catch2 : ('a -> 'b -> 'c) -> 'a -> 'b -> ('c, exn) BatResult.t
  val catch3 :
    ('a -> 'b -> 'c -> 'd) -> 'a -> 'b -> 'c -> ('d, exn) BatResult.t
  val get : ('a, exn) BatResult.t -> 'a
  val default : 'a -> ('a, 'b) BatResult.t -> 'a
  val map_default : 'b -> ('a -> 'b) -> ('a, 'c) BatResult.t -> 'b
  val is_ok : ('a, 'b) BatResult.t -> bool
  val is_bad : ('a, 'b) BatResult.t -> bool
  val is_exn : exn -> ('a, exn) BatResult.t -> bool
  val of_option : 'a option -> ('a, unit) BatResult.t
  val to_option : ('a, 'b) BatResult.t -> 'a option
  module Monad :
    sig
      val bind :
        ('a, 'b) BatResult.t ->
        ('a -> ('c, 'b) BatResult.t) -> ('c, 'b) BatResult.t
      val ( >>= ) :
        ('a, 'b) BatResult.t ->
        ('a -> ('c, 'b) BatResult.t) -> ('c, 'b) BatResult.t
      val return : 'a -> ('a, 'b) BatResult.t
    end
  module Infix :
    sig
      val ( >>= ) :
        ('a, 'b) BatResult.t ->
        ('a -> ('c, 'b) BatResult.t) -> ('c, 'b) BatResult.t
    end
  val print :
    ('b BatInnerIO.output -> 'a -> unit) ->
    'b BatInnerIO.output -> ('a, exn) BatResult.t -> unit
end