mirror of
https://github.com/lexi-lambda/freer-simple.git
synced 2024-12-24 14:43:57 +03:00
Relaxed type signature of asks function
It's previous type signature: asks :: (e -> a) -> Eff '[Reader e] a Was very restrictive, therefore, its usage was limited to very few effect stacks. New type signature: asks :: Member (Reader e) effs => (e -> a) -> Eff effs a Is much more liberal, and allows us to use `asks` in all the places we would have to use something like `f <$> ask`. Resolves #7
This commit is contained in:
parent
766e4e03ab
commit
7c1c7437e9
@ -63,16 +63,16 @@ ask = send Reader
|
||||
-- | Request a value of the environment, and apply as selector\/projection
|
||||
-- function to it.
|
||||
asks
|
||||
:: (e -> a)
|
||||
:: Member (Reader e) effs
|
||||
=> (e -> a)
|
||||
-- ^ The selector\/projection function to be applied to the environment.
|
||||
-> Eff '[Reader e] a
|
||||
-> Eff effs a
|
||||
asks f = f <$> ask
|
||||
|
||||
-- | Handler for 'Reader' effects.
|
||||
runReader :: Eff (Reader e ': effs) a -> e -> Eff effs a
|
||||
runReader m e = handleRelay pure (\Reader k -> k e) m
|
||||
|
||||
|
||||
-- | Locally rebind the value in the dynamic environment.
|
||||
--
|
||||
-- This function is like a relay; it is both an admin for 'Reader' requests,
|
||||
|
Loading…
Reference in New Issue
Block a user