Perché la differenza di etichetta argomento / senza etichetta si traduce ritorno diverso?

voti
0

Ho appena iniziato a Reason (OCaml) apprendimento e non capisco la cosa dal titolo. Perché funzionano la seconda restituisce parte, ma non calcolato il valore? Ho pensato che solo un modo di passare differisce argomenti e di conseguenza non lo fa.

let addWithoutLabel = (~x=10) => (y) => x + y;
let fifteen = addWithoutLabel(5);
Js.log(fifteen)
/* 15 */

let addWithLabel = (~x=10) => (~y) => x + y;
let sixteen = addWithLabel(~y=6);
Js.log(sixteen)
/* 
function sixteen(param) {
  return addWithLabel(param, 6);
}
*/

https://reasonml.github.io/en/try.html?rrjsx=true&reason=DYUwLgBAhgJjDqBLMALA9gVzAGSgIxGAgF4IAKAPwA9iBGABgEoSA+cgT2eLaogGoI7ANwAoUJABmiCWBAgAdiWhwkqTDnyEyAVkaiAUgGcAdMDQBzMlJlz5jEQHoAVBFraIThyLHhlCZCi4BESklDQMXGyUnKwQvALCPpCGiFSyCkqw-qhBWhTsxABseiJGphZkKWm29s4QIhIY8gDGYIhoilXp8mQADlAATlAAtswA3iIQEAPgGAOKWaqBmsB9gyMANBDFogC+Ip5AA

È pubblicato 14/02/2020 alle 00:00
fonte dall'utente
In altre lingue...                            


1 risposte

voti
3

E 'richiesto di avere almeno un parametro posizionale quando ci sono argomenti etichettati opzionali (o come nel tuo caso, gli argomenti con un parametro di default). In caso contrario, si aspetta da voi Motivo che si desidera utilizzare la funzione parzialmente applicata.

Per assicurare la piena applicazione, utilizzare un'unità ()sia nella dichiarazione della funzione e la funzione di invocazione per dire al compilatore che si desidera omettere il ~xparametro.

let addWithoutLabel = (~x=10) => (y) => x + y;
let fifteen = addWithoutLabel(5);
Js.log(fifteen)
/* 15 */

let addWithLabel = (~x=10) => (~y, ()) => x + y;
let sixteen = addWithLabel(~y=6, ());
Js.log(sixteen)
/* 16 */

https://reasonml.github.io/en/try.html?rrjsx=true&reason=DYUwLgBAhgJjDqBLMALA9gVzAGSgIxGAgF4IAKAPwA9iBGABgBoIBPAShID4IqIBqVgG4AUKEgAzROLAgQAOxLQ4SVJhz5CZAKxsRAKQDOAOmBoA5mUnTZc3cID0AKgi0tER-eGjwShMhS4BESklDQMHMTclCzMZGwR3LwCLCJiEAaIVDLyirB+qIGaFCzEAGyx8frGphYZWTZ2Ti6l7p5AA

Risposto il 14/02/2020 a 00:33
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more