`sig type input type 'a output exception No_more_input exception Input_closed exception Output_closed val read : BatInnerIO.input -> char val read_all : BatInnerIO.input -> string val pipe : unit -> BatInnerIO.input * unit BatInnerIO.output val nread : BatInnerIO.input -> int -> string val really_nread : BatInnerIO.input -> int -> string val input : BatInnerIO.input -> string -> int -> int -> int val really_input : BatInnerIO.input -> string -> int -> int -> int val close_in : BatInnerIO.input -> unit val write : 'a BatInnerIO.output -> char -> unit val nwrite : 'a BatInnerIO.output -> string -> unit val output : 'a BatInnerIO.output -> string -> int -> int -> int val really_output : 'a BatInnerIO.output -> string -> int -> int -> int val flush : 'a BatInnerIO.output -> unit val flush_all : unit -> unit val close_out : 'a BatInnerIO.output -> 'a val close_all : unit -> unit val input_string : string -> BatInnerIO.input val output_string : unit -> string BatInnerIO.output val on_close_out : 'a BatInnerIO.output -> ('a BatInnerIO.output -> unit) -> unit val create_in : read:(unit -> char) -> input:(string -> int -> int -> int) -> close:(unit -> unit) -> BatInnerIO.input val inherit_in : ?read:(unit -> char) -> ?input:(string -> int -> int -> int) -> ?close:(unit -> unit) -> BatInnerIO.input -> BatInnerIO.input val wrap_in : read:(unit -> char) -> input:(string -> int -> int -> int) -> close:(unit -> unit) -> underlying:BatInnerIO.input list -> BatInnerIO.input val create_out : write:(char -> unit) -> output:(string -> int -> int -> int) -> flush:(unit -> unit) -> close:(unit -> 'a) -> 'a BatInnerIO.output val inherit_out : ?write:(char -> unit) -> ?output:(string -> int -> int -> int) -> ?flush:(unit -> unit) -> ?close:(unit -> unit) -> 'a BatInnerIO.output -> unit BatInnerIO.output val wrap_out : write:(char -> unit) -> output:(string -> int -> int -> int) -> flush:(unit -> unit) -> close:(unit -> 'a) -> underlying:'b BatInnerIO.output list -> 'a BatInnerIO.output val default_buffer_size : int exception Overflow of string val read_byte : BatInnerIO.input -> int val read_signed_byte : BatInnerIO.input -> int val read_ui16 : BatInnerIO.input -> int val read_i16 : BatInnerIO.input -> int val read_i32 : BatInnerIO.input -> int val read_real_i32 : BatInnerIO.input -> int32 val read_i64 : BatInnerIO.input -> int64 val read_float : BatInnerIO.input -> float val read_double : BatInnerIO.input -> float val read_string : BatInnerIO.input -> string val read_line : BatInnerIO.input -> string val write_byte : 'a BatInnerIO.output -> int -> unit val write_ui16 : 'a BatInnerIO.output -> int -> unit val write_i16 : 'a BatInnerIO.output -> int -> unit val write_i32 : 'a BatInnerIO.output -> int -> unit val write_real_i32 : 'a BatInnerIO.output -> int32 -> unit val write_i64 : 'a BatInnerIO.output -> int64 -> unit val write_double : 'a BatInnerIO.output -> float -> unit val write_float : 'a BatInnerIO.output -> float -> unit val write_string : 'a BatInnerIO.output -> string -> unit val write_line : 'a BatInnerIO.output -> string -> unit external cast_output : 'a BatInnerIO.output -> unit BatInnerIO.output = "%identity" val input_channel : ?autoclose:bool -> ?cleanup:bool -> Pervasives.in_channel -> BatInnerIO.input val output_channel : ?cleanup:bool -> Pervasives.out_channel -> unit BatInnerIO.output val stdin : BatInnerIO.input val stdout : unit BatInnerIO.output val stderr : unit BatInnerIO.output val stdnull : unit BatInnerIO.output module Input : sig type t = BatInnerIO.input val compare : BatInnerIO.input -> BatInnerIO.input -> int val hash : BatInnerIO.input -> int val equal : BatInnerIO.input -> BatInnerIO.input -> bool end module Output : sig type t = unit BatInnerIO.output val compare : 'a BatInnerIO.output -> 'b BatInnerIO.output -> int val hash : 'a BatInnerIO.output -> int val equal : 'a BatInnerIO.output -> 'b BatInnerIO.output -> bool end external noop : unit -> unit = "%ignore" val get_output : 'a BatInnerIO.output -> string -> int -> int -> int val get_flush : 'a BatInnerIO.output -> unit -> unit val lock : BatConcurrent.lock Pervasives.ref val get_output_id : 'a BatInnerIO.output -> int val get_input_id : BatInnerIO.input -> int end`