const pipe = (...fns) => (value) =>↵
fns.reduce((acc, fn) => fn(acc), value);↵
↵
const compose = (...fns) => (value) =>↵
fns.reduceRight((acc, fn) => fn(acc), value);↵
↵
const double = x => x * 2;↵
const addTen = x => x + 10;↵
const square = x => x * x;↵
↵
const piped = pipe(double, addTen, square);↵
const composed = compose(square, addTen, double);↵
↵
console.log("Piped:", piped(5));↵
console.log("Composed:", composed(5));↵
↵
const processName = pipe(↵
str => str.trim(),↵
str => str.toLowerCase(),↵
str => str.split(" ").map(w => w[0].toUpperCase() + w.slice(1)).join(" ")↵
);↵
console.log(processName(" john DOE "));