Studying functors, applicative functors and monads in Haskell, I found this definition on [Wikipedia](https://en.wikipedia.org/wiki/Applicative_functor):

> 
> In functional programming, specifically Haskell, an **applicative
>  functor** is a structure that is like a **monad** (`return`, `fmap`, `join`)
>  without `join`, or like a **functor** with `return`.
> 
> 
> 

I can't understand: it seems to me that providing `return` (i.e. `pure`) to a functor is not sufficient to obtain an applicative functor, because you need to provide `ap` (i.e. `<*>`) too, which cannot be defined in terms of `fmap` and `return` only. Did I miss something or Wikipedia's definition is not absolutely correct?

EDIT 2017-02-08: I found other useful insights on this question in [this](https://stackoverflow.com/questions/41400846/applicative-functors-as-monoidal-functors) answer.