# Category theory/Natural transformation

### From HaskellWiki

< Category theory(Difference between revisions)

EndreyMark (Talk | contribs) m (→External links: typographic correction) |
EndreyMark (Talk | contribs) m (for lists: map (or fmap), for Maybe's: fmap) |
||

Line 6: | Line 6: | ||

yields the same as | yields the same as | ||

<haskell> | <haskell> | ||

− | maybeToList $ | + | maybeToList $ fmap even $ Just 5 |

</haskell> | </haskell> | ||

yields: both yield | yields: both yield | ||

Line 74: | Line 74: | ||

|+ <math>\Phi(f) : \Phi(X) \to \Phi(Y)</math> | |+ <math>\Phi(f) : \Phi(X) \to \Phi(Y)</math> | ||

| | | | ||

− | | <hask> | + | | <hask>fmap even:: Maybe Int -> Maybe Bool</hask> |

|- | |- | ||

| <hask>Nothing</hask> | | <hask>Nothing</hask> | ||

Line 114: | Line 114: | ||

|- | |- | ||

| <hask>map even . maybeToList</hask> | | <hask>map even . maybeToList</hask> | ||

− | | <hask>maybeToList . | + | | <hask>maybeToList . fmap even</hask> |

|- | |- | ||

| <hask>Nothing</hask> | | <hask>Nothing</hask> |

## Revision as of 21:47, 2 October 2006

## Contents |

## 1 Example: maybeToList

maybeToList

map even $ maybeToList $ Just 5

yields the same as

maybeToList $ fmap even $ Just 5

yields: both yield

[False]

### 1.1 Commutative diagram

Let , denote categories. Let be functors. Let us define the natural transformation.

............

### 1.2 Vertical arrows: sides of objects

… showing how the natural transformation works.

maybeToList :: Maybe a -> [a]

#### 1.2.1 Left: side of *X* object

maybeToList :: Maybe Int -> [Int] | |

Nothing |
[] |

Just 0 |
[0] |

Just 1 |
[1] |

#### 1.2.2 Right: side of *Y* object

maybeToList :: Maybe Bool -> [Bool] | |

Nothing |
[] |

Just True |
[True] |

Just False |
[False] |

### 1.3 Horizontal arrows: sides of functors

even :: Int -> Bool

#### 1.3.1 Side of Φ functor

fmap even:: Maybe Int -> Maybe Bool | |

Nothing |
Nothing |

Just 0 |
Just True |

Just 1 |
Just False |

#### 1.3.2 Side of Ψ functor

map even:: [Int] -> [Bool] | |

[] |
[] |

[0] |
[True] |

[1] |
[False] |

### 1.4 Commutativity of the diagram

both paths span between

Maybe Int -> [Bool] | ||

map even . maybeToList |
maybeToList . fmap even | |

Nothing |
[] |
[] |

Just 0 |
[True] |
[True] |

Just 1 |
[False] |
[False] |

### 1.5 Remarks

- has a more general type (even) than described hereIntegral a => a -> Bool
- Words “side”, “horizontal”, “vertical”, “left”, “right” serve here only to point to the discussed parts of a diagram, thus, they are not part of the scientific terminology.

### 1.6 External links

- The corresponding HaWiki article is not migrated here yet, so You can see it for more information.
- Wikipedia's Natural transformation article