functools
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()
, andBest()
).Supply higher order function generators (
Andify()
,Orify()
) to make composing predicate functions easier.Provide wrappers (
Apply()
,Lapply()
,Mapply()
,Sapply()
,Tapply()
, andVapply()
) 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)
Installation
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.