let merge l1 l2 ~cmp =     let rec loop acc l1 l2 =       match l1,l2 with       | [], l2 -> rev_append acc l2       | l1, [] -> rev_append acc l1       | h1 :: t1, h2 :: t2 ->         if cmp h1 h2 <= 0         then loop (h1 :: acc) t1 l2         else loop (h2 :: acc) l1 t2     in     loop [] l1 l2