É possível implementar `(Applicative m) => Applicative (StateT s m)`?

Atualmente estou trabalhando emData.Fresh eControl.Monad.Trans.Freshque resp. defina uma interface para gerar variáveis ​​novas e um transformador de mônada que implemente essa interface.

Eu inicialmente pensei que seria possível implementar oApplicative exemplo para o meuFreshT v m com o único requisito queApplicative m existe. No entanto, eu fiquei preso e parecia que eu preciso exigirMonad m. Não confiando no meu Haskell-fu, eu então virei para o pacote de transformadores, e fiquei surpreso com o que eu encontrei emControl.Monad.Trans.State.Lazy e.Strict:

instance (Functor m, Monad m) => Applicative (StateT s m) where
    pure = return
    (<*>) = ap

Então, aqui está a minha pergunta: é possível criar uma instância com semântica equivalente com o seguinte cabeçalho de instância?

instance (Applicative m) => Applicative (StateT s m) where

questionAnswers(3)

yourAnswerToTheQuestion