module type S = sig ... endModules that provide a pretty printer will match
S.
module Register : functor (M : sig ... end) -> S with type t := M.tRegisterbuilds appfunction from ato_stringfunction, and adds themodule_name ^ ".pp"to the list of pretty printers. The idea is to statically guarantee that one has the desiredppfunction at the same point where thenameis added.
module Register_pp : functor (M : sig ... end) -> S with type t := M.tRegister_ppis likeRegister, but allows a customppfunction rather than usingto_string.