936 B
936 B
Natural Transformation Examples (2/4)
data Tree a = Empty | Node a [Tree a]
toList :: Tree a -> [a]
toList Empty = []
toList (Node x l) = [x] ++ concat (map toList l)
toList
is a natural transformation.
It is also a morphism from Tree
to []
in the Category of \(\Hask\) endofunctors.
![natural transformation commutative diagram](/yogsototh/category-theory-presentation/media/commit/60135c86970a5ad0117afe51396bf7d9ff43a54c/categories/30_How/200_Monads/categories/img/mp/nattrans-tree-list.png)
![natural transformation commutative diagram](/yogsototh/category-theory-presentation/media/commit/60135c86970a5ad0117afe51396bf7d9ff43a54c/categories/30_How/200_Monads/categories/img/mp/tree-list-endofunctor-morphism.png)
toList . toTree = id
& toTree . toList = id
&therefore
[]
& Tree
are isomorph.