高阶函数应用柯里化

2020年06月22日

函数式编程(Functional programming)

纯的、没有副作用的函数

在数学和计算机科学中,柯里化是一种将使用多个参数的函数转换成一系列使用一个参数的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

典型例子,把一个多参数的函数,转化为但参数的函数

// 柯里化之前
function add(x, y) {
  return x + y;
}

add(1, 2) // 3

// 柯里化之后
function addX(y) {
  return function (x) {
    return x + y;
  };
}

addX(2)(1) // 3

实现函数柯里化

function currying(fn, length) {
  length = length || fn.length;     
  return function (...args) {            
    return args.length >= length    
        ? fn.apply(this, args)            
      : currying(fn.bind(this, ...args), length - args.length) 
  }
}
const currying = fn =>
    judge = (...args) =>
        args.length >= fn.length
            ? fn(...args)
            : (...arg) => judge(...args, ...arg)

参考文献

0 条评论