Skip to content
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