Applicative is the class of types f :: * -> * which allows lifted function application over a structure where the function is also embedded in that structure.
Definition
class Functor f => Applicative f where
pure :: a -> f a
(<*>) :: f (a -> b) -> f a -> f ...