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