"Введение в Caml" говорит
Обратите внимание, что в Caml лучше использовать определения функций Curried для множественных аргументов функции, а не кортежи.
при сравнении 'a -> 'b -> 'c
соглашений о вызовах с 'a * 'b -> 'c
.
При работе с SML/NJ я привык использовать типы кортежей как для ввода, так и для вывода: ('a * 'b) -> ('c * 'd)
, поэтому использование кортежей для выражения нескольких входы кажутся симметричными тому, как я выражаю несколько выходов.
Почему рекомендуется использовать каррирование для объявлений функций OCaml вместо аргументов кортежа? Это просто большая гибкость, связанная с возможностью каррирования/частичных вычислений, или есть какое-то другое преимущество, вытекающее из деталей реализации компилятора OCaml?