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 mark : Pretty.doc
  val unmark : Pretty.doc
  val indent : int -> Pretty.doc -> Pretty.doc
  val markup : Pretty.doc -> Pretty.doc
  val seq :
    sep:Pretty.doc ->
    doit:('-> Pretty.doc) -> elements:'a list -> Pretty.doc
  val docList :
    ?sep:Pretty.doc -> ('-> Pretty.doc) -> unit -> 'a list -> Pretty.doc
  val d_list :
    string -> (unit -> '-> Pretty.doc) -> unit -> 'a list -> Pretty.doc
  val docArray :
    ?sep: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) Pervasives.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) Pervasives.format -> 'a
  val printf : ('a, unit, Pretty.doc) Pervasives.format -> 'a
  val eprintf : ('a, unit, Pretty.doc) Pervasives.format -> 'a
  val gprintf :
    (Pretty.doc -> Pretty.doc) ->
    ('a, unit, Pretty.doc) Pervasives.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