Почему в OCaml предпочтение отдается каррированию аргументов кортежа?

"Введение в Caml" говорит

Обратите внимание, что в Caml лучше использовать определения функций Curried для множественных аргументов функции, а не кортежи.

при сравнении 'a -> 'b -> 'cсоглашений о вызовах с 'a * 'b -> 'c.

При работе с SML/NJ я привык использовать типы кортежей как для ввода, так и для вывода: ('a * 'b) -> ('c * 'd), поэтому использование кортежей для выражения нескольких входы кажутся симметричными тому, как я выражаю несколько выходов.

Почему рекомендуется использовать каррирование для объявлений функций OCaml вместо аргументов кортежа? Это просто большая гибкость, связанная с возможностью каррирования/частичных вычислений, или есть какое-то другое преимущество, вытекающее из деталей реализации компилятора OCaml?

8
задан Mike Samuel 22 May 2012 в 15:29
поделиться