diff --git a/snippets/compose.md b/snippets/compose.md new file mode 100644 index 000000000..90088ebe2 --- /dev/null +++ b/snippets/compose.md @@ -0,0 +1,14 @@ +### Compose + +Use `Array.reduce()` with the spread operator (`...`) to perform right-to-;eft function composition. +The last (rightmost) function can accept one or more arguments; the remaining functions must be unary. + +```js +const compose = (...fns) => fns.reduce((f, g) => (...args) => f(g(...args))); +/* +const add5 = x => x + 5 +const multiply = (x, y) => x * y +const multiplyAndAdd5 = compose(add5, multiply) +multiplyAndAdd5(5, 2) -> 15 +*/ +``` diff --git a/snippets/pipe.md b/snippets/pipe.md index e5136777b..434b4c0c3 100644 --- a/snippets/pipe.md +++ b/snippets/pipe.md @@ -1,6 +1,6 @@ ### Pipe -Use `Array.reduce()` to perform left-to-right function composition. +Use `Array.reduce()` with the spread operator (`...`) to perform left-to-right function composition. The first (leftmost) function can accept one or more arguments; the remaining functions must be unary. ```js