From 4b409ca34fb1885eaf9508dc85481cb697209380 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Sat, 21 Mar 2015 16:10:48 +0100 Subject: [PATCH] bugfix in CCFQueue.add_seq_front --- src/data/CCFQueue.ml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/data/CCFQueue.ml b/src/data/CCFQueue.ml index 831f88a7..0f828d8c 100644 --- a/src/data/CCFQueue.ml +++ b/src/data/CCFQueue.ml @@ -290,9 +290,15 @@ let tail q = *) let add_seq_front seq q = - let q = ref q in - seq (fun x -> q := cons x !q); - !q + let l = ref [] in + (* reversed seq *) + seq (fun x -> l := x :: !l); + List.fold_left (fun q x -> cons x q) q !l + +(*$Q + Q.(pair (list int) (list int)) (fun (l1, l2) -> \ + add_seq_front (Sequence.of_list l1) (of_list l2) |> to_list = l1 @ l2) + *) let add_seq_back q seq = let q = ref q in @@ -377,10 +383,7 @@ let to_list q = to_seq q (fun x -> l := x :: !l); List.rev !l -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 +let of_seq seq = add_seq_front seq empty (*$Q (Q.list Q.int) (fun l -> \