# Category theory/Natural transformation

### From HaskellWiki

< Category theory(Difference between revisions)

EndreyMark (Talk | contribs) m (Better section structure) |
EndreyMark (Talk | contribs) (In fact, even has a more general type (Integral a => a -> Bool) than described here) |
||

Line 16: | Line 16: | ||

:<math>\eta : \Phi \to \Psi</math> | :<math>\eta : \Phi \to \Psi</math> | ||

+ | <haskell>maybeToList :: Maybe a -> [a]</haskell> | ||

{| Border=2 CellPadding=2 CellSpacing=2 | Dia | {| Border=2 CellPadding=2 CellSpacing=2 | Dia | ||

Line 48: | Line 49: | ||

=== Horizontal arrows === | === Horizontal arrows === | ||

+ | |||

+ | /Note: <hask>even</hask> has a more general type (<hask>Integral a => a -> Bool</hask>) than described here/ | ||

:<math>f : X \to Y</math> | :<math>f : X \to Y</math> | ||

+ | <haskell> | ||

+ | even :: Int -> Bool | ||

+ | </haskell> | ||

{| Border=2 CellPadding=2 CellSpacing=2 | {| Border=2 CellPadding=2 CellSpacing=2 |

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

## Contents |

## 1 Example: maybeToList

maybeToList

map even $ maybeToList $ Just 5

yields the same as

maybeToList $ map even $ Just 5

yields: both yield

[False]

### 1.1 Vertical arrows

maybeToList :: Maybe a -> [a]

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

Nothing |
[] |

Just 0 |
[0] |

Just 1 |
[1] |

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

Nothing |
[] |

Just True |
[True] |

Just False |
[False] |

### 1.2 Horizontal arrows

/Note:even

Integral a => a -> Bool

even :: Int -> Bool

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

Nothing |
Nothing |

Just 0 |
Just True |

Just 1 |
Just False |

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

[] |
[] |

[0] |
[T]rue |

[1] |
[F]alse |

### 1.3 Commutativity of diagram

map even . maybeToList |
maybeToList . map even | |

Nothing |
[] |
[] |

Just 0 |
[True] |
[True] |

Just 1 |
[False] |
[False] |