From 0fc8aa59f6b3be618037953f7ffd0c073ef796d5 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Sun, 15 Mar 2015 22:41:44 +0100 Subject: [PATCH] bugfix in CCFQueue --- src/data/CCFQueue.ml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/data/CCFQueue.ml b/src/data/CCFQueue.ml index 04122478..638a1617 100644 --- a/src/data/CCFQueue.ml +++ b/src/data/CCFQueue.ml @@ -264,7 +264,7 @@ let append q1 q2 = match q1, q2 with | Shallow Zero, _ -> q2 | _, Shallow Zero -> q1 - | _ -> add_seq_front (to_seq q1) q2 + | _ -> add_seq_back q1 (to_seq q2) let _map_digit f d = match d with | Zero -> Zero @@ -304,7 +304,15 @@ let to_list q = to_seq q (fun x -> l := x :: !l); List.rev !l -let of_seq seq = add_seq_front seq empty +let of_seq seq = + let l = ref [] in + seq (fun x -> l := x :: !l); + List.fold_left (fun q x -> cons x q) empty !l + +(*$Q + (Q.list Q.int) (fun l -> \ + Sequence.of_list l |> of_seq |> to_list = l) +*) let _nil () = `Nil let _single x cont () = `Cons (x, cont)