sig
  type doc
  val nil : Pretty.doc
  val ( ++ ) : Pretty.doc -> Pretty.doc -> Pretty.doc
  val text : string -> Pretty.doc
  val num : int -> Pretty.doc
  val real : float -> Pretty.doc
  val chr : char -> Pretty.doc
  val line : Pretty.doc
  val leftflush : Pretty.doc
  val break : Pretty.doc
  val align : Pretty.doc
  val unalign : Pretty.doc
  val indent : int -> Pretty.doc -> Pretty.doc
  val seq :
    sep:Pretty.doc ->
    doit:('-> Pretty.doc) -> elements:'a list -> Pretty.doc
  val docList :
    Pretty.doc -> ('-> Pretty.doc) -> unit -> 'a list -> Pretty.doc
  val d_list :
    string -> (unit -> '-> Pretty.doc) -> unit -> 'a list -> Pretty.doc
  val docArray :
    Pretty.doc -> (int -> '-> Pretty.doc) -> unit -> 'a array -> Pretty.doc
  val docOpt : (unit -> '-> Pretty.doc) -> unit -> 'a option -> Pretty.doc
  val insert : unit -> Pretty.doc -> Pretty.doc
  val dprintf : ('a, unit, Pretty.doc) format -> 'a
  val fprint : Pervasives.out_channel -> width:int -> Pretty.doc -> unit
  val sprint : width:int -> Pretty.doc -> string
  val fprintf : Pervasives.out_channel -> ('a, unit, Pretty.doc) format -> 'a
  val printf : ('a, unit, Pretty.doc) format -> 'a
  val eprintf : ('a, unit, Pretty.doc) format -> 'a
  val gprintf :
    (Pretty.doc -> Pretty.doc) -> ('a, unit, Pretty.doc) format -> 'a
  val withPrintDepth : int -> (unit -> unit) -> unit
  val printDepth : int Pervasives.ref
  val printIndent : bool Pervasives.ref
  val fastMode : bool Pervasives.ref
  val flushOften : bool Pervasives.ref
  val countNewLines : int Pervasives.ref
end