Skip to content

Latest commit

 

History

History
22 lines (20 loc) · 1.55 KB

Exercises.ru.md

File metadata and controls

22 lines (20 loc) · 1.55 KB

Композиция

  1. Напишите функцию 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, сразу получим ошибку.

  1. Реализуйте композицию функций справа налево (без использования рекурсии), которая будет подавлять ошибки, если композируемые функции будут их бросать, то, исполнение функции завершается с undefined, а на ошибки можно будет подписаться через f.on('error', e => { ... });.