From 0041cce1ed77b46314b51b81bf4ab98cefce3062 Mon Sep 17 00:00:00 2001 From: David Chambers Date: Sun, 8 Oct 2017 22:50:19 +0200 Subject: [PATCH] add Filterable algebra --- README.md | 52 +++++++++++++++++++++++++++++++++++++-- figures/dependencies.dot | 3 ++- figures/dependencies.png | Bin 47141 -> 47362 bytes index.js | 1 + internal/id.js | 5 ++++ internal/patch.js | 3 +++ laws/filterable.js | 34 +++++++++++++++++++++++++ test.js | 9 ++++++- 8 files changed, 103 insertions(+), 4 deletions(-) create mode 100644 laws/filterable.js diff --git a/README.md b/README.md index 47bfde2..c8a2dce 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ structures: * [Semigroup](#semigroup) * [Monoid](#monoid) * [Group](#group) +* [Filterable](#filterable) * [Functor](#functor) * [Contravariant](#contravariant) * [Apply](#apply) @@ -33,7 +34,7 @@ structures: * [Bifunctor](#bifunctor) * [Profunctor](#profunctor) - + ## General @@ -328,6 +329,32 @@ A value which has a Group must provide an `invert` method. The 1. `invert` must return a value of the same Group. +### Filterable + +1. `v.filter(x => p(x) && q(x))` is equivalent to `v.filter(p).filter(q)` (distributivity) +2. `v.filter(x => true)` is equivalent to `v` (identity) +3. `v.filter(x => false)` is equivalent to `w.filter(x => false)` + if `v` and `w` are values of the same Filterable (annihilation) + +#### `filter` method + +```hs +filter :: Filterable f => f a ~> (a -> Boolean) -> f a +``` + +A value which has a Filterable must provide a `filter` method. The `filter` +method takes one argument: + + v.filter(p) + +1. `p` must be a function. + + 1. If `p` is not a function, the behaviour of `filter` is unspecified. + 2. `p` must return either `true` or `false`. If it returns any other value, + the behaviour of `filter` is unspecified. + +2. `filter` must return a value of the same Filterable. + ### Functor 1. `u.map(a => a)` is equivalent to `u` (identity) @@ -836,7 +863,7 @@ to implement certain methods then derive the remaining methods. Derivations: function(f) { function Id(value) { this.value = value; - }; + } Id.of = function(x) { return new Id(x); }; @@ -850,6 +877,25 @@ to implement certain methods then derive the remaining methods. Derivations: } ``` + - [`filter`][] may be derived from [`of`][], [`chain`][], and [`zero`][]: + + ```js + function(pred) { + var F = this.constructor; + return this.chain(x => pred(x) ? F.of(x) : F.zero()); + } + ``` + + - [`filter`][] may be derived from [`concat`][], [`of`][], [`zero`][], and + [`reduce`][]: + + ```js + function(pred) { + var F = this.constructor; + return this.reduce((f, x) => pred(x) ? f.concat(F.of(x)) : f, F.zero()); + } + ``` + If a data type provides a method which *could* be derived, its behaviour must be equivalent to that of the derivation (or derivations). @@ -873,12 +919,14 @@ be equivalent to that of the derivation (or derivations). [`equals`]: #equals-method [`extend`]: #extend-method [`extract`]: #extract-method +[`filter`]: #filter-method [`lte`]: #lte-method [`map`]: #map-method [`of`]: #of-method [`promap`]: #promap-method [`reduce`]: #reduce-method [`sequence`]: #sequence-method +[`zero`]: #zero-method ## Alternatives diff --git a/figures/dependencies.dot b/figures/dependencies.dot index d632f3f..f0cfed4 100644 --- a/figures/dependencies.dot +++ b/figures/dependencies.dot @@ -11,11 +11,12 @@ digraph { Chain; ChainRec; Comonad; + Contravariant; Extend; + Filterable; Foldable; Functor; Group; - Contravariant; Monad; Monoid; Ord; diff --git a/figures/dependencies.png b/figures/dependencies.png index e4d814b1dc3607f5f1bdf6f71961eaa8fee458c8..242a17e82d237c8a366b0dc5924ec398b6629a51 100644 GIT binary patch literal 47362 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≠4CLUn*$JUo!4bg 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 { Array.prototype[fl.equals] = function(y) { return this.length === y.length && this.join('') === y.join(''); }; + Array.prototype[fl.filter] = function(pred) { + return this.filter(x => pred(x)); + }; Array.prototype[fl.map] = function(f) { return this.map(x => f(x)); }; diff --git a/laws/filterable.js b/laws/filterable.js new file mode 100644 index 0000000..e932df4 --- /dev/null +++ b/laws/filterable.js @@ -0,0 +1,34 @@ +'use strict'; + +const {filter} = require('..'); + +/** + +### Filterable + +1. `v.filter(x => p(x) && q(x))` is equivalent to `v.filter(p).filter(q)` (distributivity) +2. `v.filter(x => true)` is equivalent to `v` (identity) +3. `v.filter(x => false)` is equivalent to `w.filter(x => false)` + if `v` and `w` are values of the same Filterable (annihilation) + +**/ + +const distributivity = eq => v => p => q => { + const a = v[filter](x => p(x) && q(x)); + const b = v[filter](p)[filter](q); + return eq(a, b); +}; + +const identity = eq => v => { + const a = v[filter](x => true); + const b = v; + return eq(a, b); +}; + +const annihilation = eq => v => w => { + const a = v[filter](x => false); + const b = w[filter](x => false); + return eq(a, b); +}; + +module.exports = {distributivity, identity, annihilation}; diff --git a/test.js b/test.js index 93d5fd0..1968dad 100644 --- a/test.js +++ b/test.js @@ -8,10 +8,12 @@ const alt = require('./laws/alt'); const alternative = require('./laws/alternative'); const applicative = require('./laws/applicative'); const apply = require('./laws/apply'); +const category = require('./laws/category'); const chain = require('./laws/chain'); const chainRec = require('./laws/chainrec'); const comonad = require('./laws/comonad'); const extend = require('./laws/extend'); +const filterable = require('./laws/filterable'); const foldable = require('./laws/foldable'); const functor = require('./laws/functor'); const group = require('./laws/group'); @@ -21,7 +23,6 @@ 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'); @@ -82,6 +83,12 @@ exports.extend = { associativity: test(extend.associativity(Id[fl.of])(equality)), }; +exports.filterable = { + distributivity: test(x => filterable.distributivity(equality)(Id[fl.of]([0, 1, 2, 3, 4]))(x => x % 2 === 0)(x => x > 0)), + identity: test(x => filterable.identity(equality)(Id[fl.of]([1, 2, 3]))), + annihilation: test(x => filterable.annihilation(equality)(Id[fl.of]([1, 2, 3]))(Id[fl.of]([4, 5, 6]))), +}; + exports.foldable = { associativity: test(foldable.associativity(Id[fl.of])(equality)), };