@@ -14,15 +14,9 @@ import qualified Effectful.Reader as R
14-- | Compatiblity layer for a transition period from MTL-style effect handling
14-- | Compatiblity layer for a transition period from MTL-style effect handling
15-- to 'Effectful.Eff'.
15-- to 'Effectful.Eff'.
16class Monad m => MonadReader r m where
16class Monad m => MonadReader r m where
17− {-# MINIMAL (ask | reader), local #-}
18 ask :: m r
17 ask :: m r
21 local :: (r -> r) -> m a -> m a
18 local :: (r -> r) -> m a -> m a
23− reader :: (r -> a) -> m a
24− reader f = ask >>= pure . f
26-- | Generic, overlappable instance.
20-- | Generic, overlappable instance.
27instance {-# OVERLAPPABLE #-}
21instance {-# OVERLAPPABLE #-}
28 ( MonadReader r m
22 ( MonadReader r m
@@ -31,12 +25,10 @@ instance {-# OVERLAPPABLE #-}
31 ) => MonadReader r (t m) where
25 ) => MonadReader r (t m) where
32 ask = lift ask
26 ask = lift ask
33 local f m = liftWith (\run -> local f (run m)) >>= restoreT . pure
27 local f m = liftWith (\run -> local f (run m)) >>= restoreT . pure
34− reader = lift . reader
36instance R.Reader r :> es => MonadReader r (Eff es) where
29instance R.Reader r :> es => MonadReader r (Eff es) where
37 ask = R.ask
30 ask = R.ask
38 local = R.local
31 local = R.local
41asks :: MonadReader r m => (r -> a) -> m a
33asks :: MonadReader r m => (r -> a) -> m a
42−asks = reader
34+asks f = f <$> ask