sig
  val fprintf :
    Stdlib.out_channel -> ('a, Stdlib.out_channel, unit) Stdlib.format -> 'a
  val printf : ('a, Stdlib.out_channel, unit) Stdlib.format -> 'a
  val eprintf : ('a, Stdlib.out_channel, unit) Stdlib.format -> 'a
  val sprintf : ('a, unit, string) Stdlib.format -> 'a
  val bprintf :
    Stdlib.Buffer.t -> ('a, Stdlib.Buffer.t, unit) Stdlib.format -> 'a
  val ifprintf : '-> ('a, 'b, 'c, unit) Stdlib.format4 -> 'a
  val ibprintf :
    Stdlib.Buffer.t -> ('a, Stdlib.Buffer.t, unit) Stdlib.format -> 'a
  val kfprintf :
    (Stdlib.out_channel -> 'd) ->
    Stdlib.out_channel ->
    ('a, Stdlib.out_channel, unit, 'd) Stdlib.format4 -> 'a
  val ikfprintf : ('-> 'd) -> '-> ('a, 'b, 'c, 'd) Stdlib.format4 -> 'a
  val ksprintf :
    (string -> 'd) -> ('a, unit, string, 'd) Stdlib.format4 -> 'a
  val kbprintf :
    (Stdlib.Buffer.t -> 'd) ->
    Stdlib.Buffer.t -> ('a, Stdlib.Buffer.t, unit, 'd) Stdlib.format4 -> 'a
  val ikbprintf :
    (Stdlib.Buffer.t -> 'd) ->
    Stdlib.Buffer.t -> ('a, Stdlib.Buffer.t, unit, 'd) Stdlib.format4 -> 'a
  module Args :
    sig
      type ('a, 'r) t =
          [] : ('r, 'r) Printf.Args.t
        | (::) : 'a * ('b, 'r) Printf.Args.t -> ('-> 'b, 'r) Printf.Args.t
      val apply : '-> ('a, 'r) Printf.Args.t -> 'r
      val ( @ ) :
        ('a, 'r1) Printf.Args.t ->
        ('r1, 'r2) Printf.Args.t -> ('a, 'r2) Printf.Args.t
    end
  val lfprintf :
    Stdlib.out_channel ->
    ('a, Stdlib.out_channel, unit) Stdlib.format ->
    ('a, unit) Printf.Args.t -> unit
  val lbprintf :
    Stdlib.Buffer.t ->
    ('a, Stdlib.Buffer.t, unit) Stdlib.format ->
    ('a, unit) Printf.Args.t -> unit
  val lprintf :
    ('a, Stdlib.out_channel, unit) Stdlib.format ->
    ('a, unit) Printf.Args.t -> unit
  val leprintf :
    ('a, Stdlib.out_channel, unit) Stdlib.format ->
    ('a, unit) Printf.Args.t -> unit
  val lsprintf :
    ('a, unit, string) Stdlib.format -> ('a, string) Printf.Args.t -> string
  val kprintf : (string -> 'b) -> ('a, unit, string, 'b) Stdlib.format4 -> 'a
end