functor and applicative