on dev help sign in
improve inference
1520203Eitan Chatav
squeal-postgresql/src/Squeal/PostgreSQL/PQ.hs+14−10
@@ -375,8 +375,8 @@ class Monad pq => MonadPQ schema pq | pq -> schema where
375 => (LibPQ.Connection -> IO a) -> pq a
375 => (LibPQ.Connection -> IO a) -> pq a
376 liftPQ = lift . liftPQ
376 liftPQ = lift . liftPQ
377
377
378−instance (MonadBase IO io, schema1 ~ schema)
378+instance (MonadBase IO io, schema0 ~ schema, schema1 ~ schema)
379− => MonadPQ schema (PQ schema schema1 io) where
379+ => MonadPQ schema (PQ schema0 schema1 io) where
380
380
381 manipulateParams
381 manipulateParams
382 (UnsafeManipulation q :: Manipulation schema ps ys) (params :: x) =
382 (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)
469instance MonadPQ schema m => MonadPQ schema (ContT r m)
469instance MonadPQ schema m => MonadPQ schema (ContT r m)
470instance MonadPQ schema m => MonadPQ schema (ListT m)
470instance MonadPQ schema m => MonadPQ schema (ListT m)
471
471
472+instance (Monad m, schema0 ~ schema1)
472−instance Monad m => Applicative (PQ schema schema m) where
473+ => Applicative (PQ schema0 schema1 m) where
473 pure x = PQ $ \ _conn -> pure (K x)
474 pure x = PQ $ \ _conn -> pure (K x)
474 (<*>) = pqAp
475 (<*>) = pqAp
475
476
476−instance Monad m => Monad (PQ schema schema m) where
477+instance (Monad m, schema0 ~ schema1)
478+ => Monad (PQ schema0 schema1 m) where
477 return = pure
479 return = pure
478 (>>=) = flip pqBind
480 (>>=) = flip pqBind
479
481
480−instance MFunctor (PQ schema schema) where
482+instance schema0 ~ schema1 => MFunctor (PQ schema0 schema1) where
481 hoist f (PQ pq) = PQ (f . pq)
483 hoist f (PQ pq) = PQ (f . pq)
482
484
483−instance MonadTrans (PQ schema schema) where
485+instance schema0 ~ schema1 => MonadTrans (PQ schema0 schema1) where
484 lift m = PQ $ \ _conn -> do
486 lift m = PQ $ \ _conn -> do
485 x <- m
487 x <- m
486 return (K x)
488 return (K x)
487
489
488−instance MMonad (PQ schema schema) where
490+instance schema0 ~ schema1 => MMonad (PQ schema0 schema1) where
489 embed f (PQ pq) = PQ $ \ conn -> do
491 embed f (PQ pq) = PQ $ \ conn -> do
490 evalPQ (f (pq conn)) conn
492 evalPQ (f (pq conn)) conn
491
493
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
493 liftBase = lift . liftBase
496 liftBase = lift . liftBase
494
497
495-- | A snapshot of the state of a `PQ` computation.
498-- | 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
501pqliftWith f = PQ $ \ conn ->
504pqliftWith f = PQ $ \ conn ->
502 fmap K (f $ \ pq -> unPQ pq conn)
505 fmap K (f $ \ pq -> unPQ pq conn)
503
506
504−instance MonadBaseControl b m => MonadBaseControl b (PQ schema schema m) where
507+instance (MonadBaseControl b m, schema0 ~ schema1)
508+ => MonadBaseControl b (PQ schema0 schema1 m) where
505− type StM (PQ schema schema m) x = StM m (K x schema)
509+ type StM (PQ schema0 schema1 m) x = StM m (K x schema0)
506 liftBaseWith f =
510 liftBaseWith f =
507 pqliftWith $ \ run -> liftBaseWith $ \ runInBase -> f $ runInBase . run
511 pqliftWith $ \ run -> liftBaseWith $ \ runInBase -> f $ runInBase . run
508 restoreM = PQ . const . restoreM
512 restoreM = PQ . const . restoreM