Skip to content

Commit

Permalink
Name the laws
Browse files Browse the repository at this point in the history
Fixes #21
  • Loading branch information
puffnfresh committed Apr 14, 2013
1 parent 5de2ad5 commit f5a7048
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ implemented and how they can be derived from new methods.

### Semigroup

1. `a.concat(b).concat(c)` is equivalent to `a.concat(b.concat(c))`
1. `a.concat(b).concat(c)` is equivalent to `a.concat(b.concat(c))` (associativity)

#### `concat` method

Expand All @@ -59,8 +59,8 @@ A value which has a Semigroup must provide a `concat` method. The
A value that implements the Monoid specification must also implement
the Semigroup specficiation.

1. `m.concat(m.zero())` is equivalent to `m`
2. `m.zero().concat(m)` is equivalent to `m`
1. `m.concat(m.zero())` is equivalent to `m` (left identity)
2. `m.zero().concat(m)` is equivalent to `m` (right identity)

#### `zero` method

Expand All @@ -74,8 +74,8 @@ its `constructor` object. The `zero` method takes no arguments:

### Functor

1. `u.map(function(a) { return a; }))` is equivalent to `u`
2. `u.map(function(x) { return f(g(x)); })` is equivalent to `u.map(g).map(f)`
1. `u.map(function(a) { return a; }))` is equivalent to `u` (identity)
2. `u.map(function(x) { return f(g(x)); })` is equivalent to `u.map(g).map(f)` (composition)

#### `map` method

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

### Chain

1. `m.chain(f).chain(g)` is equivalent to `m.chain(function(x) { return f(x).chain(g); })`
1. `m.chain(f).chain(g)` is equivalent to `m.chain(function(x) { return f(x).chain(g); })` (associativity)

#### `chain` method

Expand All @@ -121,8 +121,8 @@ implement:

* Functor's `map`; derivable as `function(f) { var m = this; return m.chain(function(a) { return m.of(f(a)); })}`

1. `m.of(a).chain(f)` is equivalent to `f(a)`
2. `m.chain(m.of)` is equivalent to `m`
1. `m.of(a).chain(f)` is equivalent to `f(a)` (left identity)
2. `m.chain(m.of)` is equivalent to `m` (right identity)

#### `of` method

Expand Down

0 comments on commit f5a7048

Please sign in to comment.