The call mk_binop op l r returns the term (op l) r.
\LIBRARY
DESCRIPTION
The call mk_binop op l r returns the term (op l) r provided that is
well-typed. Otherwise it fails. The term op need not be a constant nor parsed
as infix, but that is the usual case. Note that type variables in op are not
instantiated, so it needs to be the correct instance for the terms l and r.
FAILURE CONDITIONS
Fails if the types are incompatible.
EXAMPLE
# mk_binop `(+):num->num->num` `1` `2`;;
val it : term = `1 + 2`