diff --git a/src/data/CCDeque.ml b/src/data/CCDeque.ml index 48d05e4d..47e46b43 100644 --- a/src/data/CCDeque.ml +++ b/src/data/CCDeque.ml @@ -134,3 +134,16 @@ let copy d = let d' = create () in iter (fun x -> push_back d' x) d; d' + +type 'a printer = Format.formatter -> 'a -> unit + +let print pp_x out d = + let first = ref true in + Format.fprintf out "@[deque {"; + iter + (fun x -> + if !first then first:= false else Format.fprintf out ";@ "; + pp_x out x + ) d; + Format.fprintf out "}@]" + diff --git a/src/data/CCDeque.mli b/src/data/CCDeque.mli index 046e7148..eaed962d 100644 --- a/src/data/CCDeque.mli +++ b/src/data/CCDeque.mli @@ -66,3 +66,8 @@ val to_seq : 'a t -> 'a sequence val copy : 'a t -> 'a t (** Fresh copy *) + +type 'a printer = Format.formatter -> 'a -> unit + +val print : 'a printer -> 'a t printer + (** @since NEXT_RELEASE *)