There is already (|!) which almost does what you want, but in a more
logical order.
I say "almost" since it does not allow you to build up a partially
applied function. But I for one very much dislike Fn.compose in those
scenarios. I think it's generally much clearer to write out the
lambda, since then one is forced to give a name to the variable. E.g.
which is clearer?
List.map events ~f:(Fn.compose to_string fst)
List.map events ~f:(fun (kind, _time) -> to_string kind)
The latter code is much more annotated and, to me, clearer as a result.
I know that sometimes writing names is pretty unnecessary, because
it's already clear what the output of a function will be. And in that
case, adding names can just clutter the code and decrease the
information density, making it harder to read. But one can just use
(|!), which as I said makes things appear in a more logical order.
Finally, there is a significant cost for any new infix operator. If
that thing is not used all the time, it is very obscure and makes code
quite opaque.