on dev help sign in
mmorph
commit65a930a0c67ad607518ca06caa2cced7d864c310 authorEitan Chatav <eitan.chatav@gmail.com> dateSun 25 Mar 2018, 09:10 (9 years ago) parent58df0ad
2 files changed+9
squeal-postgresql/squeal-postgresql.cabal+1 squeal-postgresql/src/Squeal/PostgreSQL/PQ.hs+8
squeal-postgresql/squeal-postgresql.cabal+1
@@ -42,6 +42,7 @@ library
4242 , deepseq >= 1.4.3.0
4343 , generics-sop >= 0.3.2.0
4444 , lifted-base >= 0.2.3.12
45+ , mmorph >= 1.1.1
4546 , monad-control >= 1.0.2.3
4647 , mtl >= 2.2.2
4748 , network-ip >= 0.3.0.2
squeal-postgresql/src/Squeal/PostgreSQL/PQ.hs+8
@@ -64,6 +64,7 @@ module Squeal.PostgreSQL.PQ
6464import Control.Exception.Lifted
6565import Control.Monad.Base
6666import Control.Monad.Except
67+import Control.Monad.Morph
6768import Control.Monad.Trans.Control
6869import Data.ByteString (ByteString)
6970import Data.Foldable
@@ -475,11 +476,18 @@ instance Monad m => Monad (PQ schema schema m) where
475476 return = pure
476477 (>>=) = flip pqBind
477478
479+instance MFunctor (PQ schema schema) where
480+ hoist f (PQ pq) = PQ (f . pq)
481+
478482instance MonadTrans (PQ schema schema) where
479483 lift m = PQ $ \ _conn -> do
480484 x <- m
481485 return (K x)
482486
487+instance MMonad (PQ schema schema) where
488+ embed f (PQ pq) = PQ $ \ conn -> do
489+ evalPQ (f (pq conn)) conn
490+
483491instance MonadBase b m => MonadBase b (PQ schema schema m) where
484492 liftBase = lift . liftBase
485493