import { currying } from 'funtool';
// 基本用法,收集3个参数后自动执行
const sum = currying({
fn: (...args) => args.reduce((a, b) => a + b, 0),
done: args => args.length >= 3
});
sum(1)(2)(3); // 自动执行 → 6
// 手动执行使用value()
const product = currying({
fn: (...args) => args.reduce((a, b) => a * b, 1)
});
product(2)(3)(4).value(); // → 24
// 链式转换
const result = product(1)(2)(3)
.map(x => x * 2)
.filter(x => x > 2)
.value(); // → 24