The register_binding() and register_binding_agg() functions
are used to populate a list of functions that operate on (and return)
Expressions. These are the basis for the .data mask inside dplyr methods.
register_binding(fun_name, fun, registry = nse_funcs)A string containing a function name in the form "function" or
"package::function". The package name is currently not used but
may be used in the future to allow these types of function calls.
A function or NULL to un-register a previous function.
This function must accept Expression objects as arguments and return
Expression objects instead of regular R objects.
An environment in which the functions should be assigned.
An aggregate function or NULL to un-register a previous
aggregate function. This function must accept Expression objects as
arguments and return a list() with components:
fun: string function name
data: Expression (these are all currently a single field)
options: list of function options, as passed to call_function
The previously registered binding or NULL if no previously
registered function existed.
When to use build_expr() vs. Expression$create()?
Use build_expr() if you need to
map R function names to Arrow C++ functions
wrap R inputs (vectors) as Array/Scalar
Expression$create() is lower level. Most of the bindings use it
because they manage the preparation of the user-provided inputs
and don't need or don't want to the automatic conversion of R objects
to Scalar.