From 9eef3614ecbf18d8f4713ec5c8eec4674ef65c4a Mon Sep 17 00:00:00 2001 From: Jim Pryor Date: Tue, 2 Nov 2010 08:00:27 -0400 Subject: [PATCH] id[.] Signed-off-by: Jim Pryor --- advanced_topics/monads_in_category_theory.mdwn | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/advanced_topics/monads_in_category_theory.mdwn b/advanced_topics/monads_in_category_theory.mdwn index 25528cba..0c139c6b 100644 --- a/advanced_topics/monads_in_category_theory.mdwn +++ b/advanced_topics/monads_in_category_theory.mdwn @@ -21,10 +21,12 @@ Monoids ------- A **monoid** is a structure `(S, *, z)` consisting of an associative binary operation `*` over some set `S`, which is closed under `*`, and which contains an identity element `z` for `*`. That is: - for all s1,s2,s3 in S: - (i) s1*s2 etc are also in S - (ii) (s1*s2)*s3 = s1*(s2*s3) - (iii) z*s1 = s1 = s1*z +
```+for all `s1`, `s2`, `s3` in `S`:
+(i) `s1*s2` etc are also in `S`
+(ii) `(s1*s2)*s3` = `s1*(s2*s3)`
+(iii) `z*s1` = `s1` = `s1*z`
+```
Some examples of monoids are: @@ -41,11 +43,13 @@ When a morphism `f` in category **C** has source `C1` and target `C2`, we'll wri To have a category, the elements and morphisms have to satisfy some constraints: - (i) the class of morphisms has to be closed under composition: where f:C1->C2 and g:C2->C3, g o f is also a morphism of the category, which maps C1->C3. - (ii) composition of morphisms has to be associative - (iii) every element e of the category has to have an identity morphism id[e], which is such that for every morphism f:C1->C2: id[C2] o f = f = f o id[C1] +
```+(i) the class of morphisms has to be closed under composition: where `f:C1->C2` and `g:C2->C3`, `g o f` is also a morphism of the category, which maps `C1->C3`.
+(ii) composition of morphisms has to be associative
+(iii) every element `E` of the category has to have an identity morphism 1E, which is such that for every morphism `f:C1->C2`: 1C2 o f = f = f o 1C1
+```
-These parallel the constraints for monoids. Note that there can be multiple distinct morphisms between an element `e` and itself; they need not all be identity morphisms. Indeed from (iii) it follows that each element can have only a single identity morphism. +These parallel the constraints for monoids. Note that there can be multiple distinct morphisms between an element `E` and itself; they need not all be identity morphisms. Indeed from (iii) it follows that each element can have only a single identity morphism. A good intuitive picture of a category is as a generalized directed graph, where the category elements are the graph's nodes, and there can be multiple directed edges between a given pair of nodes, and nodes can also have multiple directed edges to themselves. (Every node must have at least one such, which is that node's identity morphism.) @@ -70,7 +74,7 @@ A **functor** is a "homomorphism", that is, a structure-preserving mapping, betw (i) associate with every element C1 of **C** an element F(C1) of **D** (ii) associate with every morphism f:C1->C2 of **C** a morphism F(f):F(C1)->F(C2) of **D** - (iii) "preserve identity", that is, for every element C1 of **C**: F of C1's identity morphism in **C** must be the identity morphism of F(C1) in **D**: F(id[C1]) = id[F(C1)]. + (iii) "preserve identity", that is, for every element C1 of **C**: F of C1's identity morphism in **C** must be the identity morphism of F(C1) in **D**: F(1C1) = 1F(C1). (iv) "distribute over composition", that is for any morphisms f and g in **C**: F(g o f) = F(g) o F(f) A functor that maps a category to itself is called an **endofunctor**. The (endo)functor that maps every element and morphism of **C** to itself is denoted `1C`. @@ -211,8 +215,8 @@ The standard category-theory presentation of the monad laws In category theory, the monad laws are usually stated in terms of `unit` and `join` instead of `unit` and `<=<`. (* - P2. every element C1 of a category **C** has an identity morphism id[C1] such that for every morphism f:C1->C2 in **C**: id[C2] o f = f = f o id[C1]. - P3. functors "preserve identity", that is for every element C1 in F's source category: F(id[C1]) = id[F(C1)]. + P2. every element C1 of a category **C** has an identity morphism 1C1 such that for every morphism f:C1->C2 in **C**: 1C2 o f = f = f o 1C1. + P3. functors "preserve identity", that is for every element C1 in F's source category: F(1C1) = 1F(C1). *) Let's remind ourselves of some principles: -- 2.11.0