@@ -49,7 +49,7 @@ import qualified Control.Monad.Trans.State.Strict as Trans.Strict (StateT , m
49import qualified Control.Monad.Trans.Writer.Lazy as Trans.Lazy (WriterT , mapWriterT)
49import qualified Control.Monad.Trans.Writer.Lazy as Trans.Lazy (WriterT , mapWriterT)
50import qualified Control.Monad.Trans.Writer.Strict as Trans.Strict (WriterT , mapWriterT)
50import qualified Control.Monad.Trans.Writer.Strict as Trans.Strict (WriterT , mapWriterT)
52−class Monad m => MonadEtherReader tag r m | m tag -> r where
52+class (Monad m, EtherTagset m) => MonadEtherReader tag r m | m tag -> r where
54 etherLocal :: proxy tag -> (r -> r) -> m a -> m a
54 etherLocal :: proxy tag -> (r -> r) -> m a -> m a
@@ -70,12 +70,13 @@ ask' = etherAsk (Proxy :: Proxy r)
70reader' :: forall m r a . MonadReader' r m => (r -> a) -> m a
70reader' :: forall m r a . MonadReader' r m => (r -> a) -> m a
71reader' = etherReader (Proxy :: Proxy r)
71reader' = etherReader (Proxy :: Proxy r)
73−instance {-# OVERLAPPING #-} (Monad m, EtherTagless tag m)
73+instance {-# OVERLAPPING #-} (Monad m, EtherTagset (EtherReaderT tag r m))
74 => MonadEtherReader tag r (EtherReaderT tag r m) where
74 => MonadEtherReader tag r (EtherReaderT tag r m) where
75 etherAsk proxy = etherReaderT proxy return
75 etherAsk proxy = etherReaderT proxy return
76 etherLocal proxy f m = etherReaderT proxy (runEtherReaderT proxy m . f)
76 etherLocal proxy f m = etherReaderT proxy (runEtherReaderT proxy m . f)
78+instance (MonadEtherReader tag r m, EtherTagset (EtherReaderT tag' r' m))
78−instance MonadEtherReader tag r m => MonadEtherReader tag r (EtherReaderT tag' r' m) where
79+ => MonadEtherReader tag r (EtherReaderT tag' r' m) where
79 etherAsk proxy = lift (etherAsk proxy)
80 etherAsk proxy = lift (etherAsk proxy)
80 etherLocal proxy = mapEtherReaderT Proxy . etherLocal proxy
81 etherLocal proxy = mapEtherReaderT Proxy . etherLocal proxy