Note, in Caml it is better to use Curried function definitions for multiple-argument functions, not tuples.
when comparing 'a -> 'b -> 'c calling conventions to 'a * 'b -> 'c.
When working with SML/NJ I got used to using tuple types for both input and output : ('a * 'b) -> ('c * 'd) so using tuples to express multiple inputs seems symmetric with the way I express multiple outputs.
Why is currying recommended for OCaml function declarations over tuple arguments? Is it just the greater flexibility that comes with allowing currying/partial evaluation, or is there some other benefit that derives from implementation details of the OCaml compiler?
a, binmatch a, b with x, y -> .... If you wish to check by yourself, I found that reading the x86 assembly generated byocamlopt -Swas convenient for me because I didn't have to learn a new representation.match a,b with x,y -> ...is optimized; in fact we even recently discussed an extension of this optimization, on which feedback would be welcome.