functools
extends functional programming in R. It accomplishes several goals:
Add support to the usual higher order functional suspects (Filter()
, Map()
, Reduce()
, etc.) with higher order functions (Compose()
, Memoise()
, Partial()
, Reject()
, Fail_With()
, Reduce_Right()
, All()
, Any()
, and Best()
).
Supply higher order function generators (Andify()
, Orify()
) to make composing predicate functions easier.
Provide wrappers (Apply()
, Lapply()
, Mapply()
, Sapply()
, Tapply()
, and Vapply()
) around their respective base R functionals to create an API with consistent naming convention, positional arguments, and argument names.
Implement common constants as functions (True()
, False()
, Identity()
, Null()
, Na()
) for point-free programming.
Extend abstract concepts of existiness and truthiness through functions (Existy()
, Truthy()
).
functools achieves these goals through three main types of function design patterns:
Closures (functions that take data and return functions)
Functionals (functions that take functions and return data)
Function Operators (functions that take functions and return functions)
You can install:
the latest released version from CRAN with
install.packages("functools")
the latest development version from github with
if (packageVersion("devtools") < 1.6) {
install.packages("devtools")
}
devtools::install_github("paulhendricks/functools")
If you encounter a clear bug, please file a minimal reproducible example on github.