From 3c48c3b5d8d19b29c4e5b0e534d1c10beab1e20f Mon Sep 17 00:00:00 2001 From: Justin Lee Date: Fri, 15 Dec 2017 07:39:39 -0800 Subject: [PATCH] Added compose such that the rightmost function may have any arity. Added spread operator to explanation of pipe. --- snippets/compose.md | 14 ++++++++++++++ snippets/pipe.md | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 snippets/compose.md 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