Skip to content

Commit

Permalink
Version 2.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
davidchambers committed Nov 3, 2019
1 parent 13b7f1b commit ad65575
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 34 deletions.
56 changes: 23 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@ contains exactly two values: one of type `a`; one of type `b`.
```javascript
> const Useless = require ('sanctuary-useless')

> const isTypeClass = x =>
. type (x) === 'sanctuary-type-classes/TypeClass@1'

> S.map (k => k + ' '.repeat (16 - k.length) +
. (Z[k].test (Pair (Useless) (Useless)) ? '\u2705 ' :
. Z[k].test (Pair (['foo']) (['bar'])) ? '\u2705 * ' :
. /* otherwise */ '\u274C '))
. (S.keys (S.unchecked.filter (S.is ($.TypeClass)) (Z)))
. (S.keys (S.unchecked.filter (isTypeClass) (Z)))
[ 'Setoid ✅ * ', // if ‘a’ and ‘b’ satisfy Setoid
. 'Ord ✅ * ', // if ‘a’ and ‘b’ satisfy Ord
. 'Semigroupoid ✅ ',
Expand All @@ -41,7 +44,7 @@ contains exactly two values: one of type `a`; one of type `b`.
. 'Contravariant ❌ ' ]
```

#### <a name="Pair" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L125">`Pair :: a -⁠> b -⁠> Pair a b`</a>
#### <a name="Pair" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L124">`Pair :: a -⁠> b -⁠> Pair a b`</a>

Pair's sole data constructor. Additionally, it serves as the
Pair [type representative][].
Expand All @@ -51,7 +54,7 @@ Pair [type representative][].
Pair (1) (2)
```

#### <a name="Pair.fst" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L156">`Pair.fst :: Pair a b -⁠> a`</a>
#### <a name="Pair.fst" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L155">`Pair.fst :: Pair a b -⁠> a`</a>

`fst (Pair (x) (y))` is equivalent to `x`.

Expand All @@ -60,7 +63,7 @@ Pair (1) (2)
'abc'
```

#### <a name="Pair.snd" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L166">`Pair.snd :: Pair a b -⁠> b`</a>
#### <a name="Pair.snd" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L165">`Pair.snd :: Pair a b -⁠> b`</a>

`snd (Pair (x) (y))` is equivalent to `y`.

Expand All @@ -69,7 +72,7 @@ Pair (1) (2)
[1, 2, 3]
```

#### <a name="Pair.swap" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L176">`Pair.swap :: Pair a b -⁠> Pair b a`</a>
#### <a name="Pair.swap" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L175">`Pair.swap :: Pair a b -⁠> Pair b a`</a>

`swap (Pair (x) (y))` is equivalent to `Pair (y) (x)`.

Expand All @@ -78,19 +81,7 @@ Pair (1) (2)
Pair ([1, 2, 3]) ('abc')
```

#### <a name="Pair.@@type" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L186">`Pair.@@type :: String`</a>

Pair [type identifier][].

```javascript
> type (Pair ('abc') ([1, 2, 3]))
'sanctuary-pair/Pair@1'

> type.parse (type (Pair ('abc') ([1, 2, 3])))
{namespace: 'sanctuary-pair', name: 'Pair', version: 1}
```

#### <a name="Pair.prototype.@@show" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L199">`Pair#@@show :: (Showable a, Showable b) => Pair a b ~> () -⁠> String`</a>
#### <a name="Pair.prototype.@@show" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L185">`Pair#@@show :: (Showable a, Showable b) => Pair a b ~> () -⁠> String`</a>

`show (Pair (x) (y))` is equivalent to
`'Pair (' + show (x) + ') (' + show (y) + ')'`.
Expand All @@ -100,7 +91,7 @@ Pair [type identifier][].
'Pair ("abc") ([1, 2, 3])'
```

#### <a name="Pair.prototype.fantasy-land/equals" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L212">`Pair#fantasy-land/equals :: (Setoid a, Setoid b) => Pair a b ~> Pair a b -⁠> Boolean`</a>
#### <a name="Pair.prototype.fantasy-land/equals" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L198">`Pair#fantasy-land/equals :: (Setoid a, Setoid b) => Pair a b ~> Pair a b -⁠> Boolean`</a>

`Pair (x) (y)` is equal to `Pair (v) (w)` [iff][] `x` is equal to `v`
and `y` is equal to `w` according to [`Z.equals`][].
Expand All @@ -113,7 +104,7 @@ true
false
```

#### <a name="Pair.prototype.fantasy-land/lte" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L228">`Pair#fantasy-land/lte :: (Ord a, Ord b) => Pair a b ~> Pair a b -⁠> Boolean`</a>
#### <a name="Pair.prototype.fantasy-land/lte" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L214">`Pair#fantasy-land/lte :: (Ord a, Ord b) => Pair a b ~> Pair a b -⁠> Boolean`</a>

`Pair (x) (y)` is less than or equal to `Pair (v) (w)` [iff][] `x` is
less than `v` or `x` is equal to `v` and `y` is less than or equal to
Expand All @@ -131,7 +122,7 @@ less than `v` or `x` is equal to `v` and `y` is less than or equal to
. Pair ('b') (2) ]
```

#### <a name="Pair.prototype.fantasy-land/compose" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L250">`Pair#fantasy-land/compose :: Pair a b ~> Pair b c -⁠> Pair a c`</a>
#### <a name="Pair.prototype.fantasy-land/compose" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L236">`Pair#fantasy-land/compose :: Pair a b ~> Pair b c -⁠> Pair a c`</a>

`compose (Pair (x) (y)) (Pair (v) (w))` is equivalent to `Pair (v) (y)`.

Expand All @@ -140,7 +131,7 @@ less than `v` or `x` is equal to `v` and `y` is less than or equal to
Pair ([1, 2, 3]) (0)
```

#### <a name="Pair.prototype.fantasy-land/concat" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L262">`Pair#fantasy-land/concat :: (Semigroup a, Semigroup b) => Pair a b ~> Pair a b -⁠> Pair a b`</a>
#### <a name="Pair.prototype.fantasy-land/concat" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L248">`Pair#fantasy-land/concat :: (Semigroup a, Semigroup b) => Pair a b ~> Pair a b -⁠> Pair a b`</a>

`concat (Pair (x) (y)) (Pair (v) (w))` is equivalent to
`Pair (concat (x) (v)) (concat (y) (w))`.
Expand All @@ -150,7 +141,7 @@ Pair ([1, 2, 3]) (0)
Pair ('abcxyz') ([1, 2, 3, 4, 5, 6])
```

#### <a name="Pair.prototype.fantasy-land/map" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L276">`Pair#fantasy-land/map :: Pair a b ~> (b -⁠> c) -⁠> Pair a c`</a>
#### <a name="Pair.prototype.fantasy-land/map" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L262">`Pair#fantasy-land/map :: Pair a b ~> (b -⁠> c) -⁠> Pair a c`</a>

`map (f) (Pair (x) (y))` is equivalent to `Pair (x) (f (y))`.

Expand All @@ -159,7 +150,7 @@ Pair ('abcxyz') ([1, 2, 3, 4, 5, 6])
Pair ('abc') (16)
```

#### <a name="Pair.prototype.fantasy-land/bimap" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L288">`Pair#fantasy-land/bimap :: Pair a c ~> (a -⁠> b, c -⁠> d) -⁠> Pair b d`</a>
#### <a name="Pair.prototype.fantasy-land/bimap" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L274">`Pair#fantasy-land/bimap :: Pair a c ~> (a -⁠> b, c -⁠> d) -⁠> Pair b d`</a>

`bimap (f) (g) (Pair (x) (y))` is equivalent to `Pair (f (x)) (g (y))`.

Expand All @@ -168,7 +159,7 @@ Pair ('abc') (16)
Pair ('ABC') (16)
```

#### <a name="Pair.prototype.fantasy-land/ap" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L300">`Pair#fantasy-land/ap :: Semigroup a => Pair a b ~> Pair a (b -⁠> c) -⁠> Pair a c`</a>
#### <a name="Pair.prototype.fantasy-land/ap" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L286">`Pair#fantasy-land/ap :: Semigroup a => Pair a b ~> Pair a (b -⁠> c) -⁠> Pair a c`</a>

`ap (Pair (v) (f)) (Pair (x) (y))` is equivalent to
`Pair (concat (v) (x)) (f (y))`.
Expand All @@ -178,7 +169,7 @@ Pair ('ABC') (16)
Pair ('abcxyz') (16)
```

#### <a name="Pair.prototype.fantasy-land/chain" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L313">`Pair#fantasy-land/chain :: Semigroup a => Pair a b ~> (b -⁠> Pair a c) -⁠> Pair a c`</a>
#### <a name="Pair.prototype.fantasy-land/chain" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L299">`Pair#fantasy-land/chain :: Semigroup a => Pair a b ~> (b -⁠> Pair a c) -⁠> Pair a c`</a>

`chain (f) (Pair (x) (y))` is equivalent to
`Pair (concat (x) (fst (f (y)))) (snd (f (y)))`.
Expand All @@ -188,7 +179,7 @@ Pair ('abcxyz') (16)
Pair ('abc256') (16)
```

#### <a name="Pair.prototype.fantasy-land/reduce" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L327">`Pair#fantasy-land/reduce :: Pair a b ~> ((c, b) -⁠> c, c) -⁠> c`</a>
#### <a name="Pair.prototype.fantasy-land/reduce" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L313">`Pair#fantasy-land/reduce :: Pair a b ~> ((c, b) -⁠> c, c) -⁠> c`</a>

`reduce (f) (x) (Pair (v) (w))` is equivalent to `f (x) (w)`.

Expand All @@ -197,7 +188,7 @@ Pair ('abc256') (16)
[1, 2, 3, 4, 5, 6]
```

#### <a name="Pair.prototype.fantasy-land/traverse" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L339">`Pair#fantasy-land/traverse :: Applicative f => Pair a b ~> (TypeRep f, b -⁠> f c) -⁠> f (Pair a c)`</a>
#### <a name="Pair.prototype.fantasy-land/traverse" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L325">`Pair#fantasy-land/traverse :: Applicative f => Pair a b ~> (TypeRep f, b -⁠> f c) -⁠> f (Pair a c)`</a>

`traverse (_) (f) (Pair (x) (y))` is equivalent to
`map (Pair (x)) (f (y))`.
Expand All @@ -207,7 +198,7 @@ Pair ('abc256') (16)
[Pair (123) ('foo'), Pair (123) ('bar'), Pair (123) ('baz')]
```

#### <a name="Pair.prototype.fantasy-land/extend" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L352">`Pair#fantasy-land/extend :: Pair a b ~> (Pair a b -⁠> c) -⁠> Pair a c`</a>
#### <a name="Pair.prototype.fantasy-land/extend" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L338">`Pair#fantasy-land/extend :: Pair a b ~> (Pair a b -⁠> c) -⁠> Pair a c`</a>

`extend (f) (Pair (x) (y))` is equivalent to
`Pair (x) (f (Pair (x) (y)))`.
Expand All @@ -217,7 +208,7 @@ Pair ('abc256') (16)
Pair ('abc') (100)
```

#### <a name="Pair.prototype.fantasy-land/extract" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v1.2.0/index.js#L365">`Pair#fantasy-land/extract :: Pair a b ~> () -⁠> b`</a>
#### <a name="Pair.prototype.fantasy-land/extract" href="https://github.com/sanctuary-js/sanctuary-pair/blob/v2.0.0/index.js#L351">`Pair#fantasy-land/extract :: Pair a b ~> () -⁠> b`</a>

`extract (Pair (x) (y))` is equivalent to `y`.

Expand All @@ -227,8 +218,7 @@ Pair ('abc') (100)
```

[Fantasy Land]: https://github.com/fantasyland/fantasy-land/tree/v4.0.1
[`Z.equals`]: https://github.com/sanctuary-js/sanctuary-type-classes/tree/v11.0.0#equals
[`Z.lte`]: https://github.com/sanctuary-js/sanctuary-type-classes/tree/v11.0.0#lte
[`Z.equals`]: https://github.com/sanctuary-js/sanctuary-type-classes/tree/v12.0.0#equals
[`Z.lte`]: https://github.com/sanctuary-js/sanctuary-type-classes/tree/v12.0.0#lte
[iff]: https://en.wikipedia.org/wiki/If_and_only_if
[type identifier]: https://github.com/sanctuary-js/sanctuary-type-identifiers/tree/v2.0.1
[type representative]: https://github.com/fantasyland/fantasy-land/tree/v4.0.1#type-representatives
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "sanctuary-pair",
"version": "1.2.0",
"version": "2.0.0",
"description": "Fantasy Land -compliant Pair type",
"license": "MIT",
"repository": {
Expand Down

0 comments on commit ad65575

Please sign in to comment.