// (^^) associates on the right, which means that we can chain instances without requiring nested brackets let ( ^^ ) (test, g1) (g2: 'x -> continuation) x = (if test x then g1 else g2) x;;