Требуется иметь хотя бы один позиционный параметр, если есть необязательные помеченные аргументы (или, как в вашем случае, аргументы с параметром по умолчанию). В противном случае Reason ожидает от вас, что вы хотите использовать частично примененную функцию.
Чтобы обеспечить полное применение, используйте единицу ()
как в объявлении функции, так и в вызове функции, чтобы сообщить компилятору, что вы хотите пропустить параметр ~x
.
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