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 $ map even $ Just 5
yields: both yield
Vertical arrows: sides of objects
… showing the operation of the natural transformation.
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
|
map even:: Maybe Int -> Maybe Bool
|
Nothing
|
Nothing
|
Just 0
|
Just True
|
Just 1
|
Just False
|
Side of functor
map even:: [Int] -> [Bool]
|
[]
|
[]
|
[0]
|
[T]rue
|
[1]
|
[F]alse
|
Commutativity of diagram
|
map even . maybeToList
|
maybeToList . map 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.