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
  • pipe processes transformations left-to-right via Array.prototype.reduce().
  • compose processes transformations right-to-left via Array.prototype.reduceRight().
Knowledge Check

What is the execution order difference between pipe() and compose()?