「Camlの紹介」は言います
Camlでは、タプルではなく、複数の引数の関数にカリー化された関数の定義を使用することをお勧めします。
'a -> 'b -> 'c
呼び出し規約をと比較する場合'a * 'b -> 'c
。
SML / NJを使用するとき、入力と出力の両方にタプルタイプを使用することに慣れました。('a * 'b) -> ('c * 'd)
したがって、タプルを使用して複数の入力を表現することは、複数の出力を表現する方法と対称に見えます。
タプル引数よりもOCaml関数宣言にカリー化が推奨されるのはなぜですか?カリー化/部分評価を可能にすることで得られる柔軟性が高いだけですか、それともOCamlコンパイラの実装の詳細から得られる他の利点がありますか?