curry: Curry a function from the start

Description Usage Arguments Value Note See Also Examples

Description

The curry function and the %<% operator performs currying on a function by partially applying the first argument, returning a function that accepts all but the first arguments of the former function. If the first argument is ... the curried argument will be interpreted as part of the ellipsis and the ellipsis will be retained in the returned function. It is thus possible to curry functions comtaining ellipis arguments to infinity (though not adviced).

Usage

1
2
3
fun %<% arg

curry(fun, arg)

Arguments

fun

A function to be curried. Can be any function (normal, already curried, primitives).

arg

The value that should be applied to the first argument.

Value

A function with the same arguments as fun except for the first, unless the first is ... in which case it will be retained.

Note

Multiple currying does not result in multiple nested calls, so while the first currying adds a layer around the curried function, potentially adding a very small performance hit, currying multiple times will not add to this effect.

See Also

Other partials: partial, tail_curry

Examples

1
2
3
4
5
6
7
# Equivalent to curry(`+`, 5)
add_5 <- `+` %<% 5
add_5(10)

# ellipsis are retained when currying
bind_5 <- cbind %<% 5
bind_5(1:10)

curry documentation built on May 1, 2019, 8:18 p.m.