updated applicative with more info on diff between functor and applicative