函数组合与管道操作符:从链式调用到声明式流
探索函数式编程中的组合子模式,使用管道操作符(提案)或手动实现进行数据流转换。 · 难度:入门 · +10XP
函数组合与管道操作符:从链式调用到声明式流
函数组合(Composition)是函数式编程的核心。本教程首先回顾传统 compose 和 pipe 函数的实现,然后介绍 Stage 2 提案中的管道操作符 |>,它可以让你以可读的方式将值传入函数。我们还会讨论如何结合柯里化(currying)与偏应用(partial application)构建数据管道。通过对比数组链式方法(.map().filter())与函数组合的异同,你将理解何时选择哪种风格。
// 手动实现 pipe
const pipe = (...fns) => (x) => fns.reduce((v, f) => f(v), x);
const addOne = x => x + 1;
const double = x => x * 2;
const toString = x => ${x};
const process = pipe(addOne, double, toString);
console.log(process(5)); // "12"
// 未来语法(提案阶段)
// const result = 5 |> addOne |> double |> toString;