# Covariant Functor A covariant functor, or simply a functor, is a type `E<a>` that has a `map` operator with the following signature: ``` map, or |>> : E<a> -> f : (a -> b) -> E<b> ``` (note given the above signature the functor is really an endofunctor because you stay within `E`). Covariant functors are pretty abundant, a simple list being one. ![[Functors, Applicatives, and Friends#^cxhp17]] ![[Functors#^is51dg]] The map function needs to satisfy a certain set of intuitive laws. ![[Functors#^ms2vt9]] ## Common Functors - [[Identity Functor]] is a functor that doesn't do anything - [[The Test Data Generator Functor]] can be used to automatically generate test data ## Sources - [[Functors, Applicatives, and Friends]] - [[Functors-2]]