on master help sign in
Remove reader function
commit076644f441be0812fc44b51ba649d4ca405f130f authorAndrzej Rybczak <andrzej@rybczak.net> dateMon 28 Jun 2021, 20:28 (5 years ago) parent6cf8c66
2 files changed+9−20
src/Effectful/Class/Reader.hs+1−9 src/Effectful/Reader.hs+8−11
src/Effectful/Class/Reader.hs+1−9
@@ -14,15 +14,9 @@ import qualified Effectful.Reader as R
1414-- | Compatiblity layer for a transition period from MTL-style effect handling
1515-- to 'Effectful.Eff'.
1616class Monad m => MonadReader r m where
17− {-# MINIMAL (ask | reader), local #-}
1817 ask :: m r
19− ask = reader id
20−
2118 local :: (r -> r) -> m a -> m a
2219
23− reader :: (r -> a) -> m a
24− reader f = ask >>= pure . f
25−
2620-- | Generic, overlappable instance.
2721instance {-# OVERLAPPABLE #-}
2822 ( MonadReader r m
@@ -31,12 +25,10 @@ instance {-# OVERLAPPABLE #-}
3125 ) => MonadReader r (t m) where
3226 ask = lift ask
3327 local f m = liftWith (\run -> local f (run m)) >>= restoreT . pure
34− reader = lift . reader
3528
3629instance R.Reader r :> es => MonadReader r (Eff es) where
3730 ask = R.ask
3831 local = R.local
39− reader = R.reader
4032
4133asks :: MonadReader r m => (r -> a) -> m a
42−asks = reader
34+asks f = f <$> ask
src/Effectful/Reader.hs+8−11
@@ -1,17 +1,17 @@
1−-- | The 'Reader' as an effect.
1+-- | The 'Reader' effect.
22module Effectful.Reader
33 ( Reader
44 , runReader
55 , ask
6− , local
7− , reader
86 , asks
7+ , local
98 ) where
109
1110import Effectful.Internal.Effect
1211import Effectful.Internal.Monad
1312
14−-- | Provide access to a read only value of type @r@.
13+-- | Provide access to a strict (WHNF), thread local, read only value of type
14+-- @r@.
1515newtype Reader r :: Effect where
1616 Reader :: r -> Reader r m a
1717
@@ -23,13 +23,10 @@ ask = do
2323 IdE (Reader r) <- getEffect
2424 pure r
2525
26−local :: Reader r :> es => (r -> r) -> Eff es a -> Eff es a
27−local f = localEffect $ \(IdE (Reader r)) -> IdE (Reader (f r))
28−
29−reader :: Reader r :> es => (r -> a) -> Eff es a
30−reader f = do
26+asks :: Reader r :> es => (r -> a) -> Eff es a
27+asks f = do
3128 IdE (Reader r) <- getEffect
3229 pure $ f r
3330
34−asks :: Reader r :> es => (r -> a) -> Eff es a
35−asks = reader
31+local :: Reader r :> es => (r -> r) -> Eff es a -> Eff es a
32+local f = localEffect $ \(IdE (Reader r)) -> IdE (Reader (f r))