根据任务要求审查这段生成的柯里化与组合代码。
构建可复用报告函数:按最低金额筛选,不修改调用方输入,只输出公开订单数据,标签前缀默认为空字符串,并在异步元数据就绪后再序列化。
JavaScript
function curry(fn) {
return function curried(...args) {
if (args.length >= fn.length) return fn(...args);
return (...next) => curried(...args, ...next);
};
}
const pipe = (...steps) => input =>
steps.reduce((value, step) => step(value), input);
const selectOrders = curry((minimum, options = {}, orders) => {
const kept = orders.filter(order => order.total >= minimum);
kept.sort((a, b) => b.total - a.total);
return kept.map(order => ({
...order,
label: options.prefix + order.id,
}));
});
const buildReport = minimum => pipe(
selectOrders(minimum),
async orders => ({ orders, generatedAt: Date.now() }),
report => JSON.stringify(report),
);
生成代码仅作示例,不代表任何特定模型