Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Link to dependent specifications #178

Merged
merged 2 commits into from
Oct 3, 2016
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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