Make Q an instance of Applicative
Make Q an instance of Applicative

Thanks to Bas van Dijk for proposing this.

In the end I replaced Functor by Applicative in the
superclasses of Quasi, thus:
  class (Monad m, Applicative m) => Quasi m where
because Functor is a superclass of Applicative.

beni55/packages-template-haskell