X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?a=blobdiff_plain;f=topics%2Fweek7_introducing_monads.mdwn;h=8f320140e626e39b127be875f2da92e2d2398eae;hb=31384d641cc4de93032132ae1b2756a03f2ff387;hp=adcf0cc2d42333ff35f1311dca7d215d2aa95cb9;hpb=787297d94b859a55fc0ae9c2f9ff1fa301fb0460;p=lambda.git diff --git a/topics/week7_introducing_monads.mdwn b/topics/week7_introducing_monads.mdwn index adcf0cc2..8f320140 100644 --- a/topics/week7_introducing_monads.mdwn +++ b/topics/week7_introducing_monads.mdwn @@ -130,7 +130,7 @@ has to obey the following Map Laws: map (id : α -> α) = (id : α -> α) map (g ○ f) = (map g) ○ (map f) - Essentially these say that `map` is a homomorphism from `(α -> β, ○, id)` to (α -> β, ○', id'), where `○'` and `id'` are `○` and `id` restricted to arguments of type _. + Essentially these say that `map` is a homomorphism from `(α -> β, ○, id)` to (α -> β, ○', id'), where `○'` and `id'` are `○` and `id` restricted to arguments of type _. That might be hard to digest because it's so abstract. Think of the following concrete example: if you take a `α list` (that's our α), and apply `id` to each of its elements, that's the same as applying `id` to the list itself. That's the first law. And if you apply the composition of functions `g ○ f` to each of the list's elements, that's the same as first applying `f` to each of the elements, and then going through the elements of the resulting list and applying `g` to each of those elements. That's the second law. These laws obviously hold for our familiar notion of `map` in relation to lists. * ***MapNable*** (in Haskelese, "Applicatives") A Mappable box type is *MapNable*