I'm having a doubt about type signature in haskell. Reading about applicative functor, I have found:
pure (+) <*> Just 3
which gives back Just (+3) which is of type Maybe (a->a). Now the signature of <*> is
(<*>) :: Applicative f => f (a -> b) -> f a -> f b
which means that our f b in the above example is is obtained substituting f with Maybe and b with a->a.
And here I was kind of surprised because as far as I knew, b cannot unify (sorry if I'm not using specified terminology, but I hope they are clear enough) with a->a.
Is that possible just because we are inside and applicative functor or there's something else that I'm missing?