diff --git a/src/ch-09_curry-and-fn-composition/9.1_curry-and-fn-composition.test.js b/src/ch-09_curry-and-fn-composition/9.1_curry-and-fn-composition.test.js index 934d8ad..8de7f26 100644 --- a/src/ch-09_curry-and-fn-composition/9.1_curry-and-fn-composition.test.js +++ b/src/ch-09_curry-and-fn-composition/9.1_curry-and-fn-composition.test.js @@ -2,7 +2,7 @@ import {expect} from 'chai'; import {sum} from "./9.1_curry-and-fn-composition"; describe("Curry and Function Composition", () => { - it("should apply two functions in a curried form", ()=> { + it("should apply two functions in a curried form", () => { expect(sum(2)(4)).to.equal(6); }); @@ -10,5 +10,16 @@ describe("Curry and Function Composition", () => { // inc10 is a specialized version of sum with param 'a' fixed to 1 const inc10 = sum(10); expect(inc10(5)).to.equal(15); - }) + }); + + it("should allow function composition of two functions", () => { + const g = a => a + 1; + const f = b => b * 2; + const h = x => f(g(x)); + + const composeFn = (f, g) => x => f(g(x)); + + expect(h(30)).to.equal(62); + expect(composeFn(f,g)(30)).to.equal(62); + }); }); diff --git a/src/ch-09_curry-and-fn-composition/README.md b/src/ch-09_curry-and-fn-composition/README.md index a088045..b9f07cf 100644 --- a/src/ch-09_curry-and-fn-composition/README.md +++ b/src/ch-09_curry-and-fn-composition/README.md @@ -29,3 +29,6 @@ All curried fns return partial apps. However, not all partial apps result from c - Define functions without declaring formal parameters - function and arrow functions (=>) cannot be used - instead call a function that returns a function with its own closure and fixed variable + +## Why to curry +- For function composition