Es posible que desee aclarar si está preguntando acerca de "functors in Haskell", o Functor
s. No siempre está claro qué categoría se asume cuando se usan términos de Teoría de categorías en Haskell.
Pero sí, la suposición predeterminada es Hask, que se toma como la categoría de tipos Haskell con funciones como morfismos. En ese caso, un endofunctor F en Hask asignaría cualquier tipo A a un tipo F (A) y cualquier función f entre dos tipos A y B a una función F (f) entre algunos tipos F (A) y F (B).
Si entonces nos limitamos sólo a aquellos endofunctors el que se asignan cualquier tipo a
a un tipo (f a)
donde f
es un constructor de tipos con clase * -> *
, entonces podemos describir el mapa asociado para funciones como una función de orden superior con el tipo (a -> b) -> (f a -> f b)
, que es, por supuesto, la clase de tipo llamada Functor
.
Sin embargo, uno puede imaginar fácilmente endofunctors buen comportamiento en Hask que no puede ser escrito (directamente) como una instancia de Functor
, tal como un funtor la asignación de un tipo a
a Either a t
. Y si bien no hay obviamente mucho sentido en un funtor de Hask a alguna otra categoría totalmente, es razonable considerar un functor (contravariant) de Hask a Haskop.
Más allá de eso, los casos de Functor
mapas necesariamente de toda la categoría Hask en algún subconjunto de la misma que, por lo tanto, también forma una categoría. Pero también es razonable hablar de functors entre subconjuntos de Hask. Por ejemplo, considere un funtor que envíe tipos Maybe a
a [a]
.
Es posible que desee leer la category-extras
package, que ofrece algunas Categoría Teoría de inspiración estructuras incrustadas dentro Hask en lugar de asumir la totalidad de la misma.
¿Falta alguna palabra antes de "Where' E' ..."? – kennytm