From 20f0b76c02efda58b465d4f47c1d4cc2125403c2 Mon Sep 17 00:00:00 2001 From: Gabe Johnson Date: Tue, 16 May 2017 12:02:16 -0500 Subject: [PATCH 1/2] Add Semigroupoid spec --- README.md | 23 +++++++++++++++++++++++ figures/dependencies.dot | 1 + index.js | 1 + internal/patch.js | 7 +++++++ laws/semigroupoid.js | 19 +++++++++++++++++++ test.js | 5 +++++ 6 files changed, 56 insertions(+) create mode 100644 laws/semigroupoid.js diff --git a/README.md b/README.md index faacf07..d180630 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ structures: * [Setoid](#setoid) * [Ord](#ord) +* [Semigroupoid](#semigroupoid) * [Semigroup](#semigroup) * [Monoid](#monoid) * [Functor](#functor) @@ -142,6 +143,28 @@ A value which has an Ord must provide a `lte` method. The 2. `lte` must return a boolean (`true` or `false`). +### Semigroupoid + +1. `a.compose(b.compose(c)) === a.compose(b).compose(c)` (associativity) + +#### `compose` method + +```hs +compose :: Semigroupoid c => c i j ~> c j k -> c i k +``` + +A value which has a Semigroupoid must provide a `compose` method. The +`compose` method takes one argument: + + a.compose(b) + +1. `b` must be a value of the same Semigroupoid + + 1. If `b` is not the same semigroupoid, behaviour of `compose` is + unspecified. + +2. `compose` must return a value of the same Semigroupoid. + ### Semigroup 1. `a.concat(b).concat(c)` is equivalent to `a.concat(b.concat(c))` (associativity) diff --git a/figures/dependencies.dot b/figures/dependencies.dot index 38e84a9..4e5e731 100644 --- a/figures/dependencies.dot +++ b/figures/dependencies.dot @@ -20,6 +20,7 @@ digraph { Plus; Profunctor; Semigroup; + Semigroupoid; Setoid; Traversable; diff --git a/index.js b/index.js index 32c8881..4ebd4ae 100644 --- a/index.js +++ b/index.js @@ -8,6 +8,7 @@ var mapping = { equals: 'fantasy-land/equals', lte: 'fantasy-land/lte', + compose: 'fantasy-land/compose', concat: 'fantasy-land/concat', empty: 'fantasy-land/empty', map: 'fantasy-land/map', diff --git a/internal/patch.js b/internal/patch.js index 8a630a9..e61e70d 100644 --- a/internal/patch.js +++ b/internal/patch.js @@ -30,4 +30,11 @@ module.exports = () => { return this.concat(b); }; Array[fl.zero] = () => []; + + Function.prototype[fl.compose] = function(g) { + const f = this; + return function(x) { + return f(g(x)); + }; + }; }; diff --git a/laws/semigroupoid.js b/laws/semigroupoid.js new file mode 100644 index 0000000..325b109 --- /dev/null +++ b/laws/semigroupoid.js @@ -0,0 +1,19 @@ +'use strict'; + +const {compose} = require('..'); + +/** + + ### Semigroupoid + + 1. `a.compose(b).compose(c)` is equivalent to `a.compose(b.compose(c))` (associativity) + +**/ + +const associativity = f => g => h => eq => x => { + const a = f[compose](g)[compose](h)(x); + const b = f[compose](g[compose](h))(x); + return eq(a, b); +}; + +module.exports = {associativity}; diff --git a/test.js b/test.js index f5a70c9..41cc363 100644 --- a/test.js +++ b/test.js @@ -19,6 +19,7 @@ const monoid = require('./laws/monoid'); const ord = require('./laws/ord'); const plus = require('./laws/plus'); const semigroup = require('./laws/semigroup'); +const semigroupoid = require('./laws/semigroupoid'); const setoid = require('./laws/setoid'); const traversable = require('./laws/traversable'); @@ -109,6 +110,10 @@ exports.semigroup = { associativity: test(semigroup.associativity(Id[fl.of])(equality)), }; +exports.semigroupoid = { + associativity: semigroupoid.associativity(x => x + 1)(x => x * x)(x => x - 2)(equality)(5), +}; + exports.setoid = { reflexivity: test(setoid.reflexivity(Id[fl.of])(equality)), symmetry: test(setoid.symmetry(Id[fl.of])(equality)), From d82076a35b44d5841eb220151f9b5814744ffff6 Mon Sep 17 00:00:00 2001 From: Gabe Johnson Date: Tue, 16 May 2017 12:03:22 -0500 Subject: [PATCH 2/2] Add Category spec --- README.md | 29 ++++++++++++++++++++++++++++- figures/dependencies.dot | 2 ++ figures/dependencies.png | Bin 42263 -> 46024 bytes index.js | 1 + internal/patch.js | 5 +++++ laws/category.js | 26 ++++++++++++++++++++++++++ test.js | 6 ++++++ 7 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 laws/category.js diff --git a/README.md b/README.md index d180630..59dc1b9 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ structures: * [Setoid](#setoid) * [Ord](#ord) * [Semigroupoid](#semigroupoid) +* [Category](#category) * [Semigroup](#semigroup) * [Monoid](#monoid) * [Functor](#functor) @@ -31,7 +32,7 @@ structures: * [Bifunctor](#bifunctor) * [Profunctor](#profunctor) - + ## General @@ -165,6 +166,32 @@ A value which has a Semigroupoid must provide a `compose` method. The 2. `compose` must return a value of the same Semigroupoid. +### Category + +A value that implements the Category specification must also implement +the [Semigroupoid](#semigroupoid) specification. + +1. `a.compose(C.id())` is equivalent to `a` (right identity) +2. `C.id().compose(a)` is equivalent to `a` (left identity) + +#### `id` method + +```hs +id :: Category c => () -> c a a +``` + +A value which has a Category must provide an `id` function on its +[type representative](#type-representatives): + + C.id() + +Given a value `c`, one can access its type representative via the +`constructor` property: + + c.constructor.id() + +1. `id` must return a value of the same Category + ### Semigroup 1. `a.concat(b).concat(c)` is equivalent to `a.concat(b.concat(c))` (associativity) diff --git a/figures/dependencies.dot b/figures/dependencies.dot index 4e5e731..cc5122b 100644 --- a/figures/dependencies.dot +++ b/figures/dependencies.dot @@ -7,6 +7,7 @@ digraph { Applicative; Apply; Bifunctor; + Category; Chain; ChainRec; Comonad; @@ -42,5 +43,6 @@ digraph { Functor -> Traversable; Plus -> Alternative; Semigroup -> Monoid; + Semigroupoid -> Category; Setoid -> Ord; } diff --git a/figures/dependencies.png b/figures/dependencies.png index 90c2e6cc6179d0dc8765178789362b8356f5103c..598c70ab20c1b6a00102f78077a2a66ded933a00 100644 GIT binary patch literal 46024 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 literal 42263 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 { return f(g(x)); }; }; + Function[fl.id] = function() { + return function(x) { + return x; + }; + }; }; diff --git a/laws/category.js b/laws/category.js new file mode 100644 index 0000000..422bdb8 --- /dev/null +++ b/laws/category.js @@ -0,0 +1,26 @@ +'use strict'; + +const {compose, id} = require('..'); + +/** + + ### Category + + 1. `a.compose(C.id())` is equivalent to `a` (right identity) + 2. `C.id().compose(a)` is equivalent to `a` (left identity) + +**/ + +const leftIdentity = f => eq => x => { + const a = f[compose](Function[id]())(x); + const b = f(x); + return eq(a, b); +}; + +const rightIdentity = f => eq => x => { + const a = Function[id]()[compose](f)(x); + const b = f(x); + return eq(a, b); +}; + +module.exports = {leftIdentity, rightIdentity}; diff --git a/test.js b/test.js index 41cc363..0b3fb8a 100644 --- a/test.js +++ b/test.js @@ -20,6 +20,7 @@ const ord = require('./laws/ord'); const plus = require('./laws/plus'); const semigroup = require('./laws/semigroup'); const semigroupoid = require('./laws/semigroupoid'); +const category = require('./laws/category'); const setoid = require('./laws/setoid'); const traversable = require('./laws/traversable'); @@ -52,6 +53,11 @@ exports.apply = { composition: test(apply.composition(Id)(equality)), }; +exports.category = { + leftIdentity: test(category.leftIdentity(x => x + 1)(equality)), + rightIdentity: test(category.rightIdentity(x => x + 1)(equality)), +}; + exports.chain = { associativity: test(chain.associativity(Id)(equality)), };