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