From 230b6cf365ea717b6da65f715ed1c9ad34366178 Mon Sep 17 00:00:00 2001 From: zonetw Date: Sun, 6 Oct 2019 23:48:09 +0800 Subject: [PATCH 1/2] Initial commit --- README.md | 2 -- package.json | 17 +++++++++++++++++ src/index.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 2 deletions(-) delete mode 100644 README.md create mode 100644 package.json create mode 100644 src/index.js diff --git a/README.md b/README.md deleted file mode 100644 index 3bbe1b5..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# practiceFp -Created with CodeSandbox diff --git a/package.json b/package.json new file mode 100644 index 0000000..357d67e --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "fp-practice", + "version": "1.0.0", + "description": "", + "main": "src/index.js", + "scripts": { + "start": "nodemon src/index.js localhost 8080" + }, + "dependencies": { + "lodash": "4.17.15", + "ramda": "0.26.1" + }, + "devDependencies": { + "nodemon": "1.18.4" + }, + "keywords": [] +} \ No newline at end of file diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..30ec9f4 --- /dev/null +++ b/src/index.js @@ -0,0 +1,54 @@ +const R = require("ramda"); +const { log } = console; +const { compose, map, equals } = R; + +class Functor { + static of(value) { + return new Functor(value); + } + constructor(value) { + this.value = value; + } + fmap(f) { + return new Functor(f(this.value)); + } +} + +const gt0 = num => num > 0; +const fNum10 = new Functor(10); +const fNum10AfterGt = fNum10.fmap(gt0); +const fNum10AfterGtR = R.map(gt0, fNum10); + +// Functor {value:10} +// Functor {value: true} +// {value:true} +log(fNum10, fNum10AfterGt, fNum10AfterGtR); + +log(R.map(gt0, [10])); // [true] + +log(new Functor(10).fmap(gt0)); + +// +const id = x => x; +const f = price => price * 1.05 + 10; +const g = total => total + 100; +const fg = compose( + g, + f +); + +const f90 = Functor.of(90); +// Identity +log(equals(f90.fmap(id), Functor.of(id(90)))); +// Compose +log(f90.fmap(f).fmap(g)); +log(f90.fmap(fg)); +log( + map( + compose( + g, + f + ), + f90 + ) +); From e817feaa7b1d78f69d99d5a5d70e8f08fc7c7d5a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 18 Jul 2020 11:18:14 +0000 Subject: [PATCH 2/2] Bump lodash from 4.17.15 to 4.17.19 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19) Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 357d67e..cc3dfff 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "start": "nodemon src/index.js localhost 8080" }, "dependencies": { - "lodash": "4.17.15", + "lodash": "4.17.19", "ramda": "0.26.1" }, "devDependencies": {