@ -13,16 +13,10 @@ module F = Format
(* * Wrappers for making pretty-printable modules *)
module type Set OrderedType = sig
module type Printable OrderedType = sig
include Caml . Set . OrderedType
val pp_element : F . formatter -> t -> unit
end
module type MapOrderedType = sig
include Caml . Map . OrderedType
val pp_key : F . formatter -> t -> unit
val pp : F . formatter -> t -> unit
end
module type PPSet = sig
@ -45,32 +39,32 @@ let pp_collection ~pp_item fmt c =
F . pp_print_list ~ pp_sep pp_item fmt c in
F . fprintf fmt " { %a } " pp_collection c
module MakePPSet ( Ord : Set OrderedType) = struct
module MakePPSet ( Ord : Printable OrderedType) = struct
include Caml . Set . Make ( Ord )
let pp_element = Ord . pp _element
let pp_element = Ord . pp
let pp fmt s =
pp_collection ~ pp_item : pp_element fmt ( elements s )
end
module MakePPCompareSet
( Ord : sig include Set OrderedType val compare_pp : t -> t -> int end ) = struct
( Ord : sig include Printable OrderedType val compare_pp : t -> t -> int end ) = struct
include Caml . Set . Make ( Ord )
let pp_element = Ord . pp _element
let pp_element = Ord . pp
let pp fmt s =
let elements_alpha = IList . sort Ord . compare_pp ( elements s ) in
pp_collection ~ pp_item : pp_element fmt elements_alpha
end
module MakePPMap ( Ord : Map OrderedType) = struct
module MakePPMap ( Ord : Printable OrderedType) = struct
include Caml . Map . Make ( Ord )
let pp_key = Ord . pp _key
let pp_key = Ord . pp
let pp ~ pp_value fmt m =
let pp_item fmt ( k , v ) = F . fprintf fmt " %a -> %a " Ord . pp _key k pp_value v in
let pp_item fmt ( k , v ) = F . fprintf fmt " %a -> %a " Ord . pp k pp_value v in
pp_collection ~ pp_item fmt ( bindings m )
end