sig
  type 'a sequence = ('-> unit) -> unit
  type 'a t = Buffer.t -> '-> unit
  val silent : 'CCPrint.t
  val unit : unit CCPrint.t
  val int : int CCPrint.t
  val string : string CCPrint.t
  val bool : bool CCPrint.t
  val float3 : float CCPrint.t
  val float : float CCPrint.t
  val char : char CCPrint.t
  val list :
    ?start:string ->
    ?stop:string -> ?sep:string -> 'CCPrint.t -> 'a list CCPrint.t
  val array :
    ?start:string ->
    ?stop:string -> ?sep:string -> 'CCPrint.t -> 'a array CCPrint.t
  val arrayi :
    ?start:string ->
    ?stop:string -> ?sep:string -> (int * 'a) CCPrint.t -> 'a array CCPrint.t
  val seq :
    ?start:string ->
    ?stop:string ->
    ?sep:string -> 'CCPrint.t -> 'CCPrint.sequence CCPrint.t
  val opt : 'CCPrint.t -> 'a option CCPrint.t
  val pair : 'CCPrint.t -> 'CCPrint.t -> ('a * 'b) CCPrint.t
  val triple :
    'CCPrint.t -> 'CCPrint.t -> 'CCPrint.t -> ('a * 'b * 'c) CCPrint.t
  val quad :
    'CCPrint.t ->
    'CCPrint.t ->
    'CCPrint.t -> 'CCPrint.t -> ('a * 'b * 'c * 'd) CCPrint.t
  val map : ('-> 'b) -> 'CCPrint.t -> 'CCPrint.t
  val output : Pervasives.out_channel -> 'CCPrint.t -> '-> unit
  val to_string : 'CCPrint.t -> '-> string
  val sprintf : ('a, Buffer.t, unit, string) Pervasives.format4 -> 'a
  val fprintf :
    Pervasives.out_channel ->
    ('a, Buffer.t, unit, unit) Pervasives.format4 -> 'a
  val to_file : string -> ('a, Buffer.t, unit, unit) Pervasives.format4 -> 'a
  val printf : ('a, Buffer.t, unit, unit) Pervasives.format4 -> 'a
  val eprintf : ('a, Buffer.t, unit, unit) Pervasives.format4 -> 'a
  module type MONAD_IO =
    sig
      type 'a t
      type output
      val ( >>= ) :
        'CCPrint.MONAD_IO.t ->
        ('-> 'CCPrint.MONAD_IO.t) -> 'CCPrint.MONAD_IO.t
      val write :
        CCPrint.MONAD_IO.output -> string -> unit CCPrint.MONAD_IO.t
    end
  module MakeIO :
    functor (M : MONAD_IO->
      sig
        val output : M.output -> 'CCPrint.t -> '-> unit M.t
        val printl : M.output -> 'CCPrint.t -> '-> unit M.t
        val fprintf :
          M.output -> ('a, Buffer.t, unit, unit M.t) Pervasives.format4 -> 'a
      end
end