rhai/doc/src/language/fn-curry.md
2020-07-22 23:12:09 +08:00

1016 B

Function Pointer Currying

{{#include ../links.md}}

It is possible to curry a [function pointer] by providing partial (or all) arguments.

Currying is done via the curry keyword and produces a new [function pointer] which carries the curried arguments.

When the curried [function pointer] is called, the curried arguments are inserted starting from the left. The actual call arguments should be reduced by the number of curried arguments.

fn mul(x, y) {                  // function with two parameters
    x * y
}

let func = Fn("mul");

func.call(21, 2) == 42;         // two arguments are required for 'mul'

let curried = func.curry(21);   // currying produces a new function pointer which
                                // carries 21 as the first argument

let curried = curry(func, 21);  // function-call style also works

curried.call(2) == 42;          // <- de-sugars to 'func.call(21, 2)'
                                //    only one argument is now required