From ae88be93dd8082e711861466cf71e56173ff3866 Mon Sep 17 00:00:00 2001
From: jim
Date: Thu, 19 Mar 2015 18:47:08 -0400
Subject: [PATCH] explain mappable laws better
---
topics/week7_introducing_monads.mdwn | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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*
--
2.11.0