Skip to content

paulhendricks/functools

Repository files navigation

functools

CRAN_Status_Badge Downloads from the RStudio CRAN mirror Build Status Build status codecov.io Project Status: Active - The project has reached a stable, usable state and is being actively developed.

functools provides tools for 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() and 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(), and Na()) for point-free programming.

  • Extend abstract concepts of existiness and truthiness through functions (Existy() and 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 development version from CRAN:

install.packages("functools")

Or 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.

Citation

To cite package ‘functools’ in publications use:

Paul Hendricks (2015). functools: Functional Programming in R. R package version 0.2.0. https://CRAN.R-project.org/package=functools

A BibTeX entry for LaTeX users is

@Manual{,
  title = {functools: Functional Programming in R},
  author = {Paul Hendricks},
  year = {2015},
  note = {R package version 0.2.0},
  url = {https://CRAN.R-project.org/package=functools},
}