# Module Pretty_printer

    module Pretty_printer: sig .. end

A list of pretty printers for various types, for use in toplevels.

`Pretty_printer` has a `string list ref` with the names of `pp` functions matching the interface:

          val pp : Format.formatter -> t -> unit

The names are actually OCaml identifier names, e.g. "Core.Date.pp". Code for building toplevels (this code is not in Core) evaluates the strings to yield the pretty printers and register them with OCaml runtime.

    val all : unit -> string list

`all ()` returns all pretty printers that have been `register`ed.

    val register : string -> unit

`register name` adds `name` to the list of pretty printers.

    module type S = sig .. end

Modules that provide a pretty printer will match `S`.

    module Register: functor (M : sig
    type t

    val module_name : string
    val to_string : t -> stringend) -> S  with type t := M.t

`Register` builds a `pp` function from a `to_string` function, and adds the `module_name ^ ".pp"` to the list of pretty printers.

    module Register_pp: functor (M : sig
    include Pretty_printer.S

    val module_name : stringend) -> S  with type t := M.t

`Register_pp` is like `Register`, but allows a custom `pp` function rather than using `to_string`.