Let's say, I have the following code:
 
  let f l = List.map succ l
 
  ....
 
  let l = f l in
  let l = List.map succ l in
    do_something_with l
 
 
Is there a way to tell the compiler to optimize it so that it runs as fast as this code:
  let l = List.map (fun x -> succ (succ x)) l in
    l
In the first case, there are two passes where succ is applied to each elements of the list.
In the second case, there is only one pass that applies succ twice to each element of the list.
 
Thank you,