@@ -375,8 +375,8 @@ class Monad pq => MonadPQ schema pq | pq -> schema where
375375 => (LibPQ.Connection -> IO a) -> pq a
376376 liftPQ = lift . liftPQ
377377
378−instance (MonadBase IO io, schema1 ~ schema)
379− => MonadPQ schema (PQ schema schema1 io) where
378+instance (MonadBase IO io, schema0 ~ schema, schema1 ~ schema)
379+ => MonadPQ schema (PQ schema0 schema1 io) where
380380
381381 manipulateParams
382382 (UnsafeManipulation q :: Manipulation schema ps ys) (params :: x) =
@@ -469,27 +469,30 @@ instance (Monoid w, MonadPQ schema m) => MonadPQ schema (Lazy.RWST r w s m)
469469instance MonadPQ schema m => MonadPQ schema (ContT r m)
470470instance MonadPQ schema m => MonadPQ schema (ListT m)
471471
472−instance Monad m => Applicative (PQ schema schema m) where
472+instance (Monad m, schema0 ~ schema1)
473+ => Applicative (PQ schema0 schema1 m) where
473474 pure x = PQ $ \ _conn -> pure (K x)
474475 (<*>) = pqAp
475476
476−instance Monad m => Monad (PQ schema schema m) where
477+instance (Monad m, schema0 ~ schema1)
478+ => Monad (PQ schema0 schema1 m) where
477479 return = pure
478480 (>>=) = flip pqBind
479481
480−instance MFunctor (PQ schema schema) where
482+instance schema0 ~ schema1 => MFunctor (PQ schema0 schema1) where
481483 hoist f (PQ pq) = PQ (f . pq)
482484
483−instance MonadTrans (PQ schema schema) where
485+instance schema0 ~ schema1 => MonadTrans (PQ schema0 schema1) where
484486 lift m = PQ $ \ _conn -> do
485487 x <- m
486488 return (K x)
487489
488−instance MMonad (PQ schema schema) where
490+instance schema0 ~ schema1 => MMonad (PQ schema0 schema1) where
489491 embed f (PQ pq) = PQ $ \ conn -> do
490492 evalPQ (f (pq conn)) conn
491493
492−instance MonadBase b m => MonadBase b (PQ schema schema m) where
494+instance (MonadBase b m, schema0 ~ schema1)
495+ => MonadBase b (PQ schema0 schema1 m) where
493496 liftBase = lift . liftBase
494497
495498-- | A snapshot of the state of a `PQ` computation.
@@ -501,8 +504,9 @@ pqliftWith :: Functor m => (PQRun schema -> m a) -> PQ schema schema m a
501504pqliftWith f = PQ $ \ conn ->
502505 fmap K (f $ \ pq -> unPQ pq conn)
503506
504−instance MonadBaseControl b m => MonadBaseControl b (PQ schema schema m) where
505− type StM (PQ schema schema m) x = StM m (K x schema)
507+instance (MonadBaseControl b m, schema0 ~ schema1)
508+ => MonadBaseControl b (PQ schema0 schema1 m) where
509+ type StM (PQ schema0 schema1 m) x = StM m (K x schema0)
506510 liftBaseWith f =
507511 pqliftWith $ \ run -> liftBaseWith $ \ runInBase -> f $ runInBase . run
508512 restoreM = PQ . const . restoreM