- Напишите функцию
pipe, композирующую передаваемые в нее аргументы слева направо.const pipe = (...fns) => x => ...А если хоть один из аргументов окажется не функционального типа, тоpipeдолжен выбросить ошибку. Например, если у нас есть три функции:
const inc = x => ++x;
const twice = x => x * 2;
const cube = x => x ** 3;И нам нужно скомпозировать их так const f = pipe(inc, twice, cube);
то при вызове const x = f(5); нужно ожидать, что x примет значение 1728.
А если мы скомпозируем const f = pipe(inc, inc); то при вызове
const x = f(7); значение x будет 9. Но если мы передадим не функцию в
pipe, например: const f = pipe(inc, 7, cube); то, не дожидаясь вызова f,
сразу получим ошибку.
- Реализуйте композицию функций справа налево (без использования рекурсии),
которая будет подавлять ошибки, если композируемые функции будут их бросать,
то, исполнение функции завершается с
undefined, а на ошибки можно будет подписаться черезf.on('error', e => { ... });.