Category theory/Natural transformation

From HaskellWiki
< Category theory
Revision as of 14:37, 3 October 2006 by EndreyMark (talk | contribs) (→‎Commutative diagram: Definition of notion ``natural transformation'')
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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 . Let .

Let us define the natural transformation. It associates to each object of a morphism of in the following way (usually, not sets are discussed here, but proper classes, so I do not use term “function” for this mapping):

  • . We call the component of at A.

Thus, the following diagram commutes:

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