The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
purrr draws inspiration from many related tools:
List operations defined in the Haskell prelude
Scala’s list methods.
Functional programming libraries for javascript: underscore.js, lodash and lazy.js.
rlist, another R package to support working with lists. Similar goals but somewhat different philosophy.
However, the goal of purrr is not to try and simulate a purer functional programming language in R; we don’t want to implement a second-class version of Haskell in R. The goal is to give you similar expressiveness to an FP language, while allowing you to write code that looks and works like R:
Instead of point free (tacit) style, we use the pipe,
%>%
, to write code that can be read from left to
right.
Instead of currying, we use ...
to pass in extra
arguments.
Before R 4.1, anonymous functions were verbose, so we provide two
convenient shorthands. For unary functions, ~ .x + 1
is
equivalent to function(.x) .x + 1
.
R is weakly typed, so we need map
variants that
describe the output type (like map_int()
,
map_dbl()
, etc) because we don’t know the return type of
.f
.
R has named arguments, so instead of providing different
functions for minor variations (e.g. detect()
and
detectLast()
) we use a named argument, .right
.
Type-stable functions are easy to reason about so additional arguments
will never change the type of the output.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.