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
Commutative diagram
Let , denote categories.
Let be functors.
Let us define the natural transformation.
............
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
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]
|
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