# 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]]