Difference between revisions of "Category theory/Natural transformation"

From HaskellWiki
Jump to navigation Jump to search
(→‎Commutative diagram: Link to image)
m (→‎Remarks: Link to source code)
Line 135: Line 135:
 
* <hask>even</hask> has a more general type (<hask>Integral a => a -> Bool</hask>) than described here
 
* <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.
 
* 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.
  +
* If You want to modifiy the [[#Commutative diagram]], see its [[Media:Natural_transfomramtion.tex|source code]] (in LaTeX using <code>amscd</code>).
   
 
=== External links ===
 
=== External links ===

Revision as of 13:17, 3 October 2006

Example: maybeToList

 map even $ maybeToList $ Just 5

yields the same as

 maybeToList $ fmap even $ Just 5

yields: both yield

 [False]

Commutative diagram

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

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

Natural transformation.png

Vertical arrows: sides of objects

… showing how the natural transformation works.

maybeToList :: Maybe a -> [a]

Left: side of X object

maybeToList :: Maybe Int -> [Int]
Nothing []
Just 0 [0]
Just 1 [1]

Right: side of Y object

maybeToList :: Maybe Bool -> [Bool]
Nothing []
Just True [True]
Just False [False]

Horizontal arrows: sides of functors

 even :: Int -> Bool

Side of functor

fmap even:: Maybe Int -> Maybe Bool
Nothing Nothing
Just 0 Just True
Just 1 Just False

Side of functor

map even:: [Int] -> [Bool]
[] []
[0] [True]
[1] [False]

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]

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.
  • If You want to modifiy the #Commutative diagram, see its source code (in LaTeX using amscd).

External links