As of GHC 7.10, Applicative is a superclass of Monad (i.e., every type which is a Monad must also be an Applicative). All the methods of Applicative (pure, <*>) can be implemented in terms of methods of Monad (return, >>=).
It is obvious that pure and return serve equivalent purposes, so pure = return. The definition for <*> is too relatively clear:
mf <*> mx = do { f <- mf; x <- mx; return (f x) }
-- = mf >>= (\f -> mx >>= (\x -> return (f x)))
-- = [r | f <- mf, x <- mx, r <- return (f x)] -- with MonadComprehensions
-- = [f x | f <- mf, x <- mx]
This function is defined as ap in the standard libraries.
Thus if you have already defined an instance of Monad for a type, you effectively can get an instance of Applicative for it "for free" by defining
instance Applicative < type > where
pure = return
(<*>) = ap
As with the monad laws, these equivalencies are not enforced, but developers should ensure that they are always upheld.