Category theory/Natural transformation: Difference between revisions

From HaskellWiki
(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 36:
| <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 54:
|}
|}


=== 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 56: Line 60:
  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 71: Line 77:
| <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 106: Line 114:
| <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

Example: maybeToList

 map even $ maybeToList $ Just 5

yields the same as

 maybeToList $ map even $ Just 5

yields: both yield

 [False]

Vertical arrows: sides of objects

… showing the operation of the natural transformation.

η:ΦΨ
maybeToList :: Maybe a -> [a]

Left: side of X object

ηX:Φ(X)Ψ(X)
maybeToList :: Maybe Int -> [Int]
Nothing []
Just 0 [0]
Just 1 [1]

Right: side of Y object

ηY:Φ(Y)Ψ(Y)
maybeToList :: Maybe Bool -> [Bool]
Nothing []
Just True [True]
Just False [False]

Horizontal arrows: sides of functors

f:XY
 even :: Int -> Bool

Side of \Phi functor

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

Side of \Psi functor

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

Commutativity of diagram

ηYΦ(f)=Ψ(f)ηX
map even . maybeToList maybeToList . map even
Nothing [] []
Just 0 [True] [True]
Just 1 [False] [False]

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.