From d4ccbccbb82eae693cb24decf40720d5fde7b51c Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Mon, 16 Mar 2015 23:22:03 +0100 Subject: [PATCH] add CCFQueue.rev --- src/data/CCFQueue.ml | 10 ++++++++++ src/data/CCFQueue.mli | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/src/data/CCFQueue.ml b/src/data/CCFQueue.ml index 62a799b6..09290e8a 100644 --- a/src/data/CCFQueue.ml +++ b/src/data/CCFQueue.ml @@ -371,6 +371,16 @@ let of_seq seq = Sequence.of_list l |> of_seq |> to_list = l) *) +let rev q = + let q' = ref empty in + iter (fun x -> q' := cons x !q') q; + !q' + +(*$Q + (Q.list Q.int) (fun l -> \ + of_list l |> rev |> to_list = List.rev l) +*) + let _nil () = `Nil let _single x cont () = `Cons (x, cont) let _double x y cont () = `Cons (x, _single y cont) diff --git a/src/data/CCFQueue.mli b/src/data/CCFQueue.mli index 3c5d4ab4..6a112b7b 100644 --- a/src/data/CCFQueue.mli +++ b/src/data/CCFQueue.mli @@ -110,6 +110,10 @@ val append : 'a t -> 'a t -> 'a t after elements of the first one. Linear in the size of the second queue. *) +val rev : 'a t -> 'a t +(** Reverse the queue, O(n) complexity + @since NEXT_RELEASE *) + val map : ('a -> 'b) -> 'a t -> 'b t (** Map values *) @@ -131,6 +135,7 @@ val of_list : 'a list -> 'a t val to_list : 'a t -> 'a list val add_seq_front : 'a sequence -> 'a t -> 'a t + val add_seq_back : 'a t -> 'a sequence -> 'a t val to_seq : 'a t -> 'a sequence