6

int -> int -> intプラス(+)のタイプが対照的であると見なされるのはなぜ(int * int) -> intですか?int私にとって、2番目は2タプル(加数)を「受け入れ」、シングル(それらの合計)を返すため、理にかなっています。

ありがとうございました!

4

2 に答える 2

12

(+)タイプがの言語を作成できます(int * int) -> int。実際、SMLはまさにこのように機能します。中置演算子の意味に影響を与えるだけです。a -> b -> cただし、OCamlの規則では、カレーなしの関数ではなく、カレー付きの関数(タイプ)の使用を強く推奨しています。良い結果の1つは、それらを部分的に適用できることです。たとえば、((+)7)はタイプの意味のある式ですint -> int。この表記は非常に頻繁に役立ちます。

于 2012-07-03T01:42:52.467 に答える
1

これは少し役に立たないように思えるかもしれませんが、関数が2つの引数を取るためです。

関数がタプルをとるとき、それは事実上単一の引数をとっています。

はインライン関数であるため、単一の引数を取ることは、とは対照的に(+)見えるため、役に立ちません。+ (1,2)1 + 2

于 2012-07-03T01:29:07.990 に答える