22  函数式编程

函数式编程(Functional Programming):将计算视为数学函数的求值,强调使用纯函数、不可变数据和高阶函数。典型代表语言:Haskell、Clojure、Scala。

Show the code
f <- function(x, fun) {
  fun(x)
}

f(1:10, sum)
#> [1] 55
f(1:10, quantile)
#>    0%   25%   50%   75%  100% 
#>  1.00  3.25  5.50  7.75 10.00

在我们创建的函数 f() 中,我们可以理解为对传入函数的 mean()sum() 等函数重命名成 fun() 并进行调用。

Show the code
f2 <- function(type) {
  switch(type,
         mean = mean,
         sum = sum,
         quantile = quantile)
}
mean
#> function (x, ...) 
#> UseMethod("mean")
#> <bytecode: 0x0000018042390298>
#> <environment: namespace:base>
f2("mean")
#> function (x, ...) 
#> UseMethod("mean")
#> <bytecode: 0x0000018042390298>
#> <environment: namespace:base>

f2("mean")(1:10)
#> [1] 5.5