Pourquoi la différence des arguments étiquetés / retour sans étiquette résultats différents?

voix
0

Je viens d'apprendre commencé Reason (OCaml) et je ne comprends pas la chose intitulé. Pourquoi la deuxième partie retourne fonction mais pas valeur calculée? Je pensais que seulement une façon de passer diffère de l'argument et un résultat ne fonctionne pas.

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

Créé 14/02/2020 à 00:00
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
3

Il est nécessaire d'avoir au moins un paramètre de position quand il y a des arguments optionnels marqués (ou comme dans votre cas, les arguments avec un paramètre par défaut). Sinon Reason attend de vous que vous souhaitez utiliser la fonction partiellement appliquée.

Pour assurer l'application complète, utilisez une unité ()à la fois la déclaration de fonction et appel de fonction pour indiquer au compilateur que vous voulez omettre le ~xparamètre.

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

Créé 14/02/2020 à 00:33
source utilisateur

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