# Applicative Functor
An applicative functor is a [[Covariant Functor|Covariant Functor]] that supports application. This means that it has an operator `apply` with the following signature:
```
apply, or <*> : E<a -> b> -> E<a> -> E<b>
```
(Notice the operator for apply is the same one used for multiplication. Think of this as the count of combinations that will be produced.)
An applicative functor also requires a `return` operation, which takes an element `a` and returns an `E<a>`.
![[Applicative Functors#^lxdtwe]]
![[Applicative Functors#^blxqsh]]
![[Applicative Functors#^xunzc6]]
Because a `map` can be constructed from `apply` and `return`, every applicative functor is also a covariant functor.
```fsharp
let map ea f = (result f) <*> ea
```
Every [[Monad]] is an applicative functor (as `apply` can be constructed from a `bind`), but not every applicative functor is a monad.
![[Monad#^d2re07]]