Skip to content

Commit

Permalink
Link to dependent specifications (#178)
Browse files Browse the repository at this point in the history
  • Loading branch information
laurens authored and davidchambers committed Oct 3, 2016
1 parent 137c015 commit 69acbd9
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ A value which has a Semigroup must provide a `concat` method. The
### Monoid

A value that implements the Monoid specification must also implement
the Semigroup specification.
the [Semigroup](#semigroup) specification.

1. `m.concat(m.empty())` is equivalent to `m` (right identity)
2. `m.empty().concat(m)` is equivalent to `m` (left identity)
Expand Down Expand Up @@ -173,7 +173,7 @@ method takes one argument:
### Apply

A value that implements the Apply specification must also
implement the Functor specification.
implement the [Functor](#functor) specification.

1. `v.ap(u.ap(a.map(f => g => x => f(g(x)))))` is equivalent to `v.ap(u).ap(a)` (composition)

Expand Down Expand Up @@ -201,7 +201,7 @@ method takes one argument:
### Applicative

A value that implements the Applicative specification must also
implement the Apply specification.
implement the [Apply](#apply) specification.

1. `v.ap(a.of(x => x))` is equivalent to `v` (identity)
2. `a.of(x).ap(a.of(f))` is equivalent to `a.of(f(x))` (homomorphism)
Expand Down Expand Up @@ -249,7 +249,7 @@ method takes two arguments:
### Traversable

A value that implements the Traversable specification must also
implement the Functor and Foldable specifications.
implement the [Functor](#functor) and [Foldable](#foldable) specifications.

1. `t(u.traverse(x => x, F.of))` is equivalent to `u.traverse(t, G.of)`
for any `t` such that `t(a).map(f)` is equivalent to `t(a.map(f))` (naturality)
Expand Down Expand Up @@ -300,7 +300,7 @@ method takes two arguments:
### Chain

A value that implements the Chain specification must also
implement the Apply specification.
implement the [Apply](#apply) specification.

1. `m.chain(f).chain(g)` is equivalent to `m.chain(x => f(x).chain(g))` (associativity)

Expand All @@ -325,7 +325,7 @@ method takes one argument:

### ChainRec

A value that implements the ChainRec specification must also implement the Chain specification.
A value that implements the ChainRec specification must also implement the [Chain](#chain) specification.

1. `m.chainRec((next, done, v) => p(v) ? d(v).map(done) : n(v).map(next), i)`
is equivalent to
Expand Down Expand Up @@ -356,7 +356,7 @@ or its `constructor` object. The `chainRec` method takes two arguments:
### Monad

A value that implements the Monad specification must also implement
the Applicative and Chain specifications.
the [Applicative](#applicative) and [Chain](#chain) specifications.

1. `m.of(a).chain(f)` is equivalent to `f(a)` (left identity)
2. `m.chain(m.of)` is equivalent to `m` (right identity)
Expand Down Expand Up @@ -386,7 +386,7 @@ method takes one argument:

### Comonad

A value that implements the Comonad specification must also implement the Functor and Extend specifications.
A value that implements the Comonad specification must also implement the [Functor](#functor) and [Extend](#extend) specifications.

1. `w.extend(_w => _w.extract())` is equivalent to `w`
2. `w.extend(f).extract()` is equivalent to `f(w)`
Expand All @@ -409,7 +409,7 @@ The `extract` method takes no arguments:
### Bifunctor

A value that implements the Bifunctor specification must also implement
the Functor specification.
the [Functor](#functor) specification.

1. `p.bimap(a => a, b => b)` is equivalent to `p` (identity)
2. `p.bimap(a => f(g(a)), b => h(i(b))` is equivalent to `p.bimap(g, i).bimap(f, h)` (composition)
Expand Down Expand Up @@ -440,7 +440,7 @@ method takes two arguments:
### Profunctor

A value that implements the Profunctor specification must also implement
the Functor specification.
the [Functor](#functor) specification.

1. `p.promap(a => a, b => b)` is equivalent to `p` (identity)
2. `p.promap(a => f(g(a)), b => h(i(b)))` is equivalent to `p.promap(f, i).promap(g, h)` (composition)
Expand Down

0 comments on commit 69acbd9

Please sign in to comment.