@@ -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))