¿OCaml convertirá la función de múltiples argumentos a curry o al revés?

Cuando estaba aprendiendo lo esencial de OCaml, me dijeron que cada función en OCaml es en realidad una función con un solo parámetro. Una función de múltiples argumentos es en realidad una función que toma un argumento y devuelve una función que toma el siguiente argumento y devuelve ...

Esto es curry, lo tengo.

Entonces mi pregunta es:

caso 1

si lo hago

let plus x y = x + y

Dentro de OCaml cuando se compila, OCaml lo cambiará alet plus = fun x -> fun y -> x + y?

o al revés que

caso 2

Si lo hago

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

OCaml lo convertirá alet plus x y = x + y?

¿Qué caso es verdad? ¿Qué ha hecho el compilador de OCaml de benifit u optimización en el caso correcto?

Además, sicaso 2 es cierto, entonces, ¿cuál es el punto a considerar que OCaml está haciendo curry? Quiero decir que en realidad hace lo contrario, ¿verdad?

Esta pregunta en realidad está relacionada conComprender el `Fn.const` de Core

Respuestas a la pregunta(4)

Su respuesta a la pregunta