sig
  type constructor = string
  type type_name = string
  type record_field = string
  type tag = int
  type representation = PPrintEngine.document
  val variant :
    PPrintOCaml.type_name ->
    PPrintOCaml.constructor ->
    PPrintOCaml.tag ->
    PPrintOCaml.representation list -> PPrintOCaml.representation
  val record :
    PPrintOCaml.type_name ->
    (PPrintOCaml.record_field * PPrintOCaml.representation) list ->
    PPrintOCaml.representation
  val tuple : PPrintOCaml.representation list -> PPrintOCaml.representation
  val string : string -> PPrintOCaml.representation
  val int : int -> PPrintOCaml.representation
  val int32 : int32 -> PPrintOCaml.representation
  val int64 : int64 -> PPrintOCaml.representation
  val nativeint : nativeint -> PPrintOCaml.representation
  val float : float -> PPrintOCaml.representation
  val char : char -> PPrintOCaml.representation
  val bool : bool -> PPrintOCaml.representation
  val option :
    ('-> PPrintOCaml.representation) ->
    'a option -> PPrintOCaml.representation
  val list :
    ('-> PPrintOCaml.representation) ->
    'a list -> PPrintOCaml.representation
  val array :
    ('-> PPrintOCaml.representation) ->
    'a array -> PPrintOCaml.representation
  val ref :
    ('-> PPrintOCaml.representation) ->
    'Pervasives.ref -> PPrintOCaml.representation
  val unknown : PPrintOCaml.type_name -> '-> PPrintOCaml.representation
end