@@ -49,7 +49,7 @@ import qualified Control.Monad.Trans.State.Strict as Trans.Strict (StateT , m
4949import qualified Control.Monad.Trans.Writer.Lazy as Trans.Lazy (WriterT , mapWriterT)
5050import qualified Control.Monad.Trans.Writer.Strict as Trans.Strict (WriterT , mapWriterT)
5151
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
5353
5454 etherLocal :: proxy tag -> (r -> r) -> m a -> m a
5555
@@ -70,12 +70,13 @@ ask' = etherAsk (Proxy :: Proxy r)
7070reader' :: forall m r a . MonadReader' r m => (r -> a) -> m a
7171reader' = etherReader (Proxy :: Proxy r)
7272
73−instance {-# OVERLAPPING #-} (Monad m, EtherTagless tag m)
73+instance {-# OVERLAPPING #-} (Monad m, EtherTagset (EtherReaderT tag r m))
7474 => MonadEtherReader tag r (EtherReaderT tag r m) where
7575 etherAsk proxy = etherReaderT proxy return
7676 etherLocal proxy f m = etherReaderT proxy (runEtherReaderT proxy m . f)
7777
78−instance MonadEtherReader tag r m => MonadEtherReader tag r (EtherReaderT tag' r' m) where
78+instance (MonadEtherReader tag r m, EtherTagset (EtherReaderT tag' r' m))
79+ => MonadEtherReader tag r (EtherReaderT tag' r' m) where
7980 etherAsk proxy = lift (etherAsk proxy)
8081 etherLocal proxy = mapEtherReaderT Proxy . etherLocal proxy
8182