Will OCaml Multi-Argument-Funktion in Currying umwandeln oder umgekehrt?

Als ich OCaml-Grundlagen lernte, wurde mir gesagt, dass jede Funktion in OCaml tatsächlich eine Funktion mit nur einem Parameter ist. Eine Funktion mit mehreren Argumenten ist eigentlich eine Funktion, die ein Argument annimmt und eine Funktion zurückgibt, die das nächste Argument annimmt und ... zurückgibt.

Das ist Currying, das habe ich.

Also meine Frage ist:

Fall

wenn ich mach

let plus x y = x + y

Inside OCaml, wenn es kompiliert wird, wird OCaml es auf @ ändelet plus = fun x -> fun y -> x + y?

oder umgekehrt

case 2

Wenn ich mach

let plus = fun x -> fun y -> x + y

OCaml konvertiert es inlet plus x y = x + y?

Welcher Fall ist richtig? Was hat der OCaml-Compiler im richtigen Fall getan?

Zusätzlich, wenncase 2 ist wahr, woran sollte man dann denken, dass OCaml gerade Curry macht? Ich meine, es macht eigentlich den umgekehrten Weg, oder?

Diese Frage bezieht sich tatsächlich aufUnderstand Core `Fn.const`

Antworten auf die Frage(8)

Ihre Antwort auf die Frage