Q50 [Coding]: Implement pipe() and compose() functional utilities.
// pipe: Executes functions left-to-right
const pipe = (...fns) => (x) => fns.reduce((v, fn) => fn(v), x);
// compose: Executes functions right-to-left
const compose = (...fns) => (x) => fns.reduceRight((v, fn) => fn(v), x);
// Example usage:
const add5 = x => x + 5;
const double = x => x * 2;
pipe(add5, double)(10); // (10 + 5) * 2 = 30
compose(double, add5)(10); // (10 + 5) * 2 = 30
Key Takeaways
pipeprocesses transformations left-to-right viaArray.prototype.reduce().composeprocesses transformations right-to-left viaArray.prototype.reduceRight().
Knowledge Check
What is the execution order difference between pipe() and compose()?