Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
R
 
 
man
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Lambda

Travis-CI Build Status Coverage Status

Lambda contains only one function f(), which allows you to write new functions in a very compact format.

Simply write the body of the function as you would normally. If you want a given variable to appear as one of the arguments to the function, surround it with .(). Default arguments can be also be specified within .() as you normally would in the argument list.

library(lambda)

function(x, y) x + y
#> function(x, y) x + y
f(.(x) + .(y))
#> function (x, y) 
#> x + y

Reduce(f(.(x) + .(y)), 1:10)
#> [1] 55

add <- f(.(x) + .(y = 5))
add
#> function (x, y = 5) 
#> x + y

add(1)
#> [1] 6

add(1, 2)
#> [1] 3

It works very well as a way to compactly define simple utility functions

x <- list(1, list(NULL), 2)
compact <- f(Filter(Negate(is.null), .(x)))
compact
#> function (x) 
#> Filter(Negate(is.null), x)
compact(x)
#> [[1]]
#> [1] 1
#> 
#> [[2]]
#> [[2]][[1]]
#> NULL
#> 
#> 
#> [[3]]
#> [1] 2

Or for partial function application

f1 <- f(runif(n = rpois(1, 5), .(...)))
f1
#> function (...) 
#> runif(n = rpois(1, 5), ...)

References

For a different (better?) approach to this same idea, see pryr::f().

About

Simple anonymous functions

Resources

License

Releases

No releases published

Packages

No packages published

Languages

You can’t perform that action at this time.