This solution is generated by ChatGPT, correctness is not guaranteed.

AI solution for JavaScript Coding Question on BFE.dev
11. what is Composition? create a pipe()

Here's one possible implementation of pipe():

const pipe = (fns) => (x) =>
  fns.reduce((acc, fn) => fn(acc), x);

Explanation:

  • pipe takes an array of functions fns as its argument, and returns a new function that applies each function in fns to the output of the previous function.
  • The new function takes one argument x, which is passed as the input to the first function in fns.
  • reduce is used to invoke each function in fns in turn. The accumulator acc starts out as x, and is replaced by the return value of each function as it is invoked.
  • Finally, the output of the last function is returned as the output of the new function.

Example usage:

const times = (y) => (x) => x * y;
const plus = (y) => (x) => x + y;
const subtract = (y) => (x) => x - y;
const divide = (y) => (x) => x / y;

const twice = pipe([times(2)]); // equivalent to (x) => x * 2
const increment = pipe([plus(1)]); // equivalent to (x) => x + 1
const multiplyAndAdd = pipe([times(2), plus(3)]); // equivalent to (x) => x * 2 + 3
const subtractAndDivide = pipe([subtract(3), divide(4)]); // equivalent to (x) => (x - 3) / 4

console.log(twice(3)); // output: 6
console.log(increment(3)); // output: 4
console.log(multiplyAndAdd(3)); // output: 9
console.log(subtractAndDivide(3)); // output: 0