Personal tools

Category theory/Natural transformation

From HaskellWiki

< Category theory(Difference between revisions)
Jump to: navigation, search
(In fact, even has a more general type (Integral a => a -> Bool) than described here)
m (Rephrasings)
Line 13: Line 13:
 
</haskell>
 
</haskell>
   
=== Vertical arrows ===
+
=== Vertical arrows: sides of objects ===
  +
  +
… showing the operation of the natural transformation.
   
 
:<math>\eta : \Phi \to \Psi</math>
 
:<math>\eta : \Phi \to \Psi</math>
 
<haskell>maybeToList :: Maybe a -> [a]</haskell>
 
<haskell>maybeToList :: Maybe a -> [a]</haskell>
  +
  +
==== Left: side of X object ====
   
 
{| Border=2 CellPadding=2 CellSpacing=2 | Dia
 
{| Border=2 CellPadding=2 CellSpacing=2 | Dia
Line 32: Line 34:
 
| <hask>[1]</hask>
 
| <hask>[1]</hask>
 
|}
 
|}
  +
  +
==== Right: side of Y object ====
   
 
{| Border=2 CellPadding=2 CellSpacing=2 | Dia
 
{| Border=2 CellPadding=2 CellSpacing=2 | Dia
Line 48: Line 52:
 
|}
 
|}
   
=== Horizontal arrows ===
+
=== Horizontal arrows: sides of functors ===
 
/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>
Line 54: Line 58:
 
even :: Int -> Bool
 
even :: Int -> Bool
 
</haskell>
 
</haskell>
  +
  +
==== Side of \Phi functor ====
   
 
{| Border=2 CellPadding=2 CellSpacing=2
 
{| Border=2 CellPadding=2 CellSpacing=2
Line 69: Line 75:
 
| <hask>Just False</hask>
 
| <hask>Just False</hask>
 
|}
 
|}
  +
  +
==== Side of \Psi functor ====
   
 
{| Border=2 CellPadding=2 CellSpacing=2
 
{| Border=2 CellPadding=2 CellSpacing=2
Line 104: Line 112:
 
| <hask>[False]</hask>
 
| <hask>[False]</hask>
 
|}
 
|}
  +
  +
=== Remarks ===
  +
  +
* <hask>even</hask> has a more general type (<hask>Integral a => a -> Bool</hask>) than described here
  +
* 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.

Revision as of 19:41, 2 October 2006

Contents

1 Example:
maybeToList

 map even $ maybeToList $ Just 5

yields the same as

 maybeToList $ map even $ Just 5

yields: both yield

 [False]

1.1 Vertical arrows: sides of objects

… showing the operation of the natural transformation.

\eta : \Phi \to \Psi
maybeToList :: Maybe a -> [a]

1.1.1 Left: side of X object

\eta_X : \Phi(X) \to \Psi(X)
maybeToList :: Maybe Int -> [Int]
Nothing
[]
Just 0
[0]
Just 1
[1]

1.1.2 Right: side of Y object

\eta_Y : \Phi(Y) \to \Psi(Y)
maybeToList :: Maybe Bool -> [Bool]
Nothing
[]
Just True
[True]
Just False
[False]

1.2 Horizontal arrows: sides of functors

f : X \to Y
 even :: Int -> Bool

1.2.1 Side of \Phi functor

\Phi(f) : \Phi(X) \to \Phi(Y)
map even:: Maybe Int -> Maybe Bool
Nothing
Nothing
Just 0
Just True
Just 1
Just False

1.2.2 Side of \Psi functor

\Psi(f) : \Psi(X) \to \Psi(Y)
map even:: [Int] -> [Bool]
[]
[]
[0]
[T]rue
[1]
[F]alse

1.3 Commutativity of diagram

\eta_Y \cdot \Phi(f) = \Psi(f) \cdot \eta_X
map even . maybeToList
maybeToList . map even
Nothing
[]
[]
Just 0
[True]
[True]
Just 1
[False]
[False]

1.4 Remarks

  • even
    has a more general type (
    Integral a => a -> Bool
    ) than described here
  • 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.