Насколько я понимаю, функтор - это отображение между двумя категориями, например, от объектов в к объектам в , где и являются категориями.
В Haskell есть Hask, в котором объекты являются типами Haskell, а морфизмы являются функциями Haskell. Однако класс типов Functor
имеет функцию fmap
, которая сопоставляет эти типы (которые, таким образом, являются объектами, а не самими категориями):
fmap :: (a -> b) -> f a -> f b
f a
и f b
являются объектами в Hask. Означает ли это, что каждый экземпляр Functor
в Haskell является endofunctor, и если нет, то Functor
действительно представляет функтор?
Что мне здесь не хватает? Являются ли типы также категориями в Haskell?