From f1d6e3419b9d09d99c81cba620dd28e6b918c8fe Mon Sep 17 00:00:00 2001 From: favonia Date: Sat, 9 Apr 2022 15:42:18 -0500 Subject: [PATCH] test: support OCaml < 4.12 --- test/ListAsBwd.ml | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/test/ListAsBwd.ml b/test/ListAsBwd.ml index a058113..83172fd 100644 --- a/test/ListAsBwd.ml +++ b/test/ListAsBwd.ml @@ -17,9 +17,26 @@ let append xs ys = xs @ ys let prepend xs ys = xs @ ys -let equal ~eq xs ys = L.equal ~eq (L.rev xs) (L.rev ys) - -let compare ~cmp xs ys = L.compare ~cmp (L.rev xs) (L.rev ys) +let equal ~eq xs ys = + let rec go = + function + | [], [] -> true + | x::xs, y::ys -> eq x y && go (xs, ys) + | _ -> false + in + go (List.rev xs, List.rev ys) + +let compare ~cmp xs ys = + let rec go = + function + | [], [] -> 0 + | _::_, [] -> 1 + | [], _::_ -> -1 + | x::xs, y::ys -> + let c = cmp x y in + if c <> 0 then c else go (xs, ys) + in + go (List.rev xs, List.rev ys) let iter ~f xs = L.iter ~f (L.rev xs)