将函数列表应用于参数

Apply a list of function to a parameter

我正在寻找这样的东西

const applicate = (functions, parameters) => {
  let result = parameters;
  for (let i = 0; i < functions.length; i++) {
    result = functions[i](result);
  }
  return result;
}

用法最终是这样的:

applicate([fn,...], parameter)

const fn = (parameter) => parameter * 2

applicate([fn, fn], 2) = 8

谢谢!

可能 pipecompose 会有所帮助

const applicate = (fns, ...args) => R.pipe(...fns)(...args);

console.log(
  applicate([
    R.add(23),
    R.multiply(3),
    R.divide(2),
  ], 100),
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.0/ramda.js" integrity="sha256-buL0byPvI/XRDFscnSc/e0q+sLA65O9y+rbF+0O/4FE=" crossorigin="anonymous"></script>


我建议不要采用这种自定义 applicate 解决方案, 如您所见,它只是对管道的行为进行了别名...

您可以尝试习惯 Pipe/Compose,因为它们是 fp 工具箱的重要组成部分,人们已经非常习惯这样的词汇表。

const applicate = R.pipe(
  (n) => n * 2,
  (n) => n * 2,
);

console.log(
  applicate(100),
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.0/ramda.js" integrity="sha256-buL0byPvI/XRDFscnSc/e0q+sLA65O9y+rbF+0O/4FE=" crossorigin="anonymous"></script>

不错的阅读:https://randycoulman.com/blog/2016/05/31/thinking-in-ramda-combining-functions/(管道章节)